[/list] [section=eligibility]Eligibility[/section] Steam Next Fest: June 2027 is open to upcoming games that meet all of the following criteria: [list] [*]Associated with a Steamworks developer account in good standing [*]Store page must be published and public [*]Is not a prologue, chapter 1, or otherwise 'demo' version of existing content available to customers [*]Includes a publicly playable demo by the time the festival begins [*]Released any time after the conclusion of the fest on June 21, 2027 [/list] [b]Please Note:[/b] [list] [*]All upcoming games may participate with a playable demo in Steam Next Fest, regardless of release date. [*]A game may only appear once in Steam Next Fest. …
[/list] [section=changes]Changes from Previous Next Fests[/section] As of the October edition of 2024, there are a few changes to Next Fest: [list][*]There is no more official livestream [*]The developer livestream portion of the event has been shifted to an independent tab -- as always, livestreams are optional [*]The organization of the event is revamped from previous genre tabs, so the page may look different from before [/list] [section=eligibility]Eligibility[/section] Steam Next Fest: October 2026 is open to upcoming games that meet all of the following criteria: [list] [*]Associated with a Steamworks developer account in good standing [*]The store page must be published and public [*]Is not a prologue, chapter 1, or otherwise 'demo' version of existing content available to customers [*]Includes a publicly playable demo by the time the festival begins [*]To be released any time after the conclusion of the fest on October 26, 2026 [/list] [b]Please Note:[/b] [list] [*]Upcoming games may participate with a playable demo in Steam Next Fest, regardless of release date. [*]Titles are only allowed to participate in one Next Fest. …
If interested, you may set up your own discount event that includes some or all of the dates of the event, or, for your convenience, the event organizer may be able to share a (purely optional) custom discount event that will appear directly in your Discount Management Tool. Keep in mind that third party sales events are not exempt from Steam's typical [doclink=marketing/discounts#21]30-day discount cooldown[/doclink], so be sure to plan out your discount participation accordingly. …
One of the primary scenarios for this call is to grant an item to users who also own a specific other game. This can be useful if your game has custom UI for showing a specific promo item to the user otherwise if you want to grant multiple promotional items then use [api]ISteamInventory::AddPromoItems[/api] or [api]ISteamInventory::GrantPromoItems[/api]. …
[/td][/tr] [/table] Returns the set of all item definition IDs which are defined in the App Admin panel of the Steamworks website. These item definitions may not necessarily be contiguous integers. This should be called in response to a [apitype]ISteamInventory::SteamInventoryDefinitionUpdate_t[/apitype] callback. …
The item drop frequency can be controlled at the application level via the Community->Inventory Service->Playtime Item Grants section. There are three controls that will allow the following customization: (1) How long before a item drop? (2) How many items drops in a window? And, (3) How long is the cool-down window before we can grant another item drop? …
See the Steam [doclink=features/inventory/itemstore]Item Store[/doclink] documentation for more information on enabling and customizing your store page. [subsection=SpecifyPrices]Specifying Prices[/subsection] Item prices can be defined in either of the following fields, but not both. …
The following libraries provide support for other aspects of game development: [list] [*] [url=http://www.freetype.org/index.html]FreeType[/url] - font rendering (both vector-based and bitmap fonts) on Linux [*] [url=http://www.freedesktop.org/wiki/Software/fontconfig]Fontconfig[/url] - configuring and customizing font access [*] [url=http://www.radgametools.com/miles.htm]Miles Sound System[/url] - a middleware sound engine for Linux development [*] [url=http://www.radgametools.com/bnkmain.htm]Bink Video[/url] - a video codec designed for game developers [*] [url=http://www.webmproject.org/]WebM[/url] - an open media file format; used for recording Team Fortress 2 video instead of QuickTime. …
"[code-inline]steam_0[/code-inline]", "[code-inline]steam_1[/code-inline]", etc. You can also upload custom icons for your product on the Steamworks site. Default set of icons: [no_glow] [table] [tr] [th]Icon[/th][th]Name[/th][th]Description[/th] [/tr] [tr] [td][docimg=marker_2.png][/docimg][/td][td]steam_marker[/td][td]Marker[/td] [/tr] [tr] [td][docimg=achievment_1.png][/docimg][/td][td]steam_achievement[/td][td]Achievement[/td] [/tr] [tr] [td][docimg=attack_1.png][/docimg][/td][td]steam_attack[/td][td]Attack[/td] [/tr] [tr] [td][docimg=bolt_1.png][/docimg][/td][td]steam_bolt[/td][td]Bolt[/td] [/tr] [tr] [td][docimg=bookmark_1.png][/docimg][/td][td]steam_bookmark[/td][td]Bookmark[/td] [/tr] [tr] [td][docimg=bug.png][/docimg][/td][td]steam_bug[/td][td]Bug[/td] [/tr] [tr] [td][docimg=cart.png][/docimg][/td][td]steam_cart[/td][td]Cart[/td] [/tr] [tr] [td][docimg=caution.png][/docimg][/td][td]steam_caution[/td][td]Caution[/td] [/tr] [tr] [td][docimg=chat.png][/docimg][/td][td]steam_chat[/td][td]Chat[/td] [/tr] [tr] [td][docimg=checkmark.png][/docimg][/td][td]steam_checkmark[/td][td]Checkmark[/td] [/tr] [tr] [td][docimg=chest.png][/docimg][/td][td]steam_chest[/td][td]Chest[/td] [/tr] [tr] [td][docimg=circle.png][/docimg][/td][td]steam_circle[/td][td]Circle[/td] [/tr] [tr] [td][docimg=combat.png][/docimg][/td][td]steam_combat[/td][td]Combat[/td] [/tr] [tr] [td][docimg=completed.png][/docimg][/td][td]steam_completed[/td][td]Completed[/td] [/tr] [tr] [td][docimg=crown.png][/docimg][/td][td]steam_crown[/td][td]Crown[/td] [/tr] [tr] [td][docimg=death.png][/docimg][/td][td]steam_death[/td][td]Death[/td] [/tr] [tr] [td][docimg=defend.png][/docimg][/td][td]steam_defend[/td][td]Defend[/td] [/tr] [tr] [td][docimg=diamond.png][/docimg][/td][td]steam_diamond[/td][td]Diamond[/td] [/tr] [tr] [td][docimg=edit.png][/docimg][/td][td]steam_edit[/td][td]Edit[/td] [/tr] [tr] [td][docimg=effect.png][/docimg][/td][td]steam_effect[/td][td]Effect[/td] [/tr] [tr] [td][docimg=explosion.png][/docimg][/td][td]steam_explosion[/td][td]Explosion[/td] [/tr] [tr] [td][docimg=fix.png][/docimg][/td][td]steam_fix[/td][td]Fix[/td] [/tr] [tr] [td][docimg=flag.png][/docimg][/td][td]steam_flag[/td][td]Flag[/td] [/tr] [tr] [td][docimg=gem.png][/docimg][/td][td]steam_gem[/td][td]Gem[/td] [/tr] [tr] [td][docimg=group.png][/docimg][/td][td]steam_group[/td][td]Group[/td] [/tr] [tr] [td][docimg=heart.png][/docimg][/td][td]steam_heart[/td][td]Heart[/td] [/tr] [tr] [td][docimg=info.png][/docimg][/td][td]steam_info[/td][td]Info[/td] [/tr] [tr] [td][docimg=invalid.png][/docimg][/td][td]steam_invalid[/td][td]Invalid[/td] [/tr] [tr] [td][docimg=minus.png][/docimg][/td][td]steam_minus[/td][td]Minus[/td] [/tr] [tr] [td][docimg=pair.png][/docimg][/td][td]steam_pair[/td][td]Pair[/td] [/tr] [tr] [td][docimg=person.png][/docimg][/td][td]steam_person[/td][td]Person[/td] [/tr] [tr] [td][docimg=plus.png][/docimg][/td][td]steam_plus[/td][td]Plus[/td] [/tr] [tr] [td][docimg=purchase.png][/docimg][/td][td]steam_purchase[/td][td]Purchase[/td] [/tr] [tr] [td][docimg=question.png][/docimg][/td][td]steam_question[/td][td]Question[/td] [/tr] [tr] [td][docimg=ribbon.png][/docimg][/td][td]steam_ribbon[/td][td]Ribbon[/td] [/tr] [tr] [td][docimg=screenshot.png][/docimg][/td][td]steam_screenshot[/td][td]Screenshot[/td] [/tr] [tr] [td][docimg=scroll.png][/docimg][/td][td]steam_scroll[/td][td]Scroll[/td] [/tr] [tr] [td][docimg=square.png][/docimg][/td][td]steam_square[/td][td]Square[/td] [/tr] [tr] [td][docimg=star.png][/docimg][/td][td]steam_star[/td][td]Star[/td] [/tr] [tr] [td][docimg=starburst.png][/docimg][/td][td]steam_starburst[/td][td]Starburst[/td] [/tr] [tr] [td][docimg=timer.png][/docimg][/td][td]steam_timer[/td][td]Timer[/td] [/tr] [tr] [td][docimg=transfer.png][/docimg][/td][td]steam_transfer[/td][td]Transfer[/td] [/tr] [tr] [td][docimg=triangle.png][/docimg][/td][td]steam_triangle[/td][td]Triangle[/td] [/tr] [tr] [td][docimg=trophy.png][/docimg][/td][td]steam_trophy[/td][td]Trophy[/td] [/tr] [tr] [td][docimg=view.png][/docimg][/td][td]steam_view[/td][td]View[/td] [/tr] [tr] [td][docimg=x.png][/docimg][/td][td]steam_x[/td][td]X[/td] [/tr] [/table] [/no_glow] [section=example]Example Code[/section] Below is a code sample for integrating Steam Timeline with Left 4 Dead. …
[subsection]Controller Configuration[/subsection] Players can set up fully customized input mappings for any game in their library, using native mode, legacy mode, or even a mix of both. These input mappings are called "controller configurations" and a player can make many different ones for a single game, as well as share them with other players online. …
The currencies listed as "live" below are currently available to customers on Steam. Currencies listed without being Live are ones where we collect prices and plan to release at some point in the future. …
[subsection]Store page, community hub, user reviews, etc. remain the same[/subsection] All public elements of the appID will remain exactly the same after the transfer, and customer ownership is not interrupted or changed. Once the transfer completes, the new owner of the appID can edit the store page, edit the Publisher field, upload new assets, update the build, change the price and so on. …
If the program's ExitCode is 0, then the install script assumes it was successful and writes your keyname as 1 in the registry. Steam customers love a quick and silent install. Add silent or quiet parameters to all run process commands and only add what you absolutely need for the game. …
[table] [tr][th]Name[/th][th]Value[/th][th]Description[/th][/tr] [tr=k_EHTMLMouseCursor_User][td][b]k_EHTMLMouseCursor_SizeNESW[/b][/td][td]0[/td][td][/td][/tr] [tr=k_EHTMLMouseCursor_None][td][b]k_EHTMLMouseCursor_None[/b][/td][td]1[/td][td][/td][/tr] [tr=k_EHTMLMouseCursor_Arrow][td][b]k_EHTMLMouseCursor_Arrow[/b][/td][td]2[/td][td][/td][/tr] [tr=k_EHTMLMouseCursor_IBeam][td][b]k_EHTMLMouseCursor_IBeam[/b][/td][td]3[/td][td][/td][/tr] [tr=k_EHTMLMouseCursor_Hourglass][td][b]k_EHTMLMouseCursor_Hourglass[/b][/td][td]4[/td][td][/td][/tr] [tr=k_EHTMLMouseCursor_WaitArrow][td][b]k_EHTMLMouseCursor_WaitArrow[/b][/td][td]5[/td][td][/td][/tr] [tr=k_EHTMLMouseCursor_Crosshair][td][b]k_EHTMLMouseCursor_Crosshair[/b][/td][td]6[/td][td][/td][/tr] [tr=k_EHTMLMouseCursor_Up][td][b]k_EHTMLMouseCursor_Up[/b][/td][td]7[/td][td][/td][/tr] [tr=k_EHTMLMouseCursor_SizeNW][td][b]k_EHTMLMouseCursor_SizeNW[/b][/td][td]8[/td][td][/td][/tr] [tr=k_EHTMLMouseCursor_SizeSE][td][b]k_EHTMLMouseCursor_SizeSE[/b][/td][td]9[/td][td][/td][/tr] [tr=k_EHTMLMouseCursor_SizeNE][td][b]k_EHTMLMouseCursor_SizeNE[/b][/td][td]10[/td][td][/td][/tr] [tr=k_EHTMLMouseCursor_SizeSW][td][b]k_EHTMLMouseCursor_SizeSW[/b][/td][td]11[/td][td][/td][/tr] [tr=k_EHTMLMouseCursor_SizeW][td][b]k_EHTMLMouseCursor_SizeW[/b][/td][td]12[/td][td][/td][/tr] [tr=k_EHTMLMouseCursor_SizeE][td][b]k_EHTMLMouseCursor_SizeE[/b][/td][td]13[/td][td][/td][/tr] [tr=k_EHTMLMouseCursor_SizeN][td][b]k_EHTMLMouseCursor_SizeN[/b][/td][td]14[/td][td][/td][/tr] [tr=k_EHTMLMouseCursor_SizeS][td][b]k_EHTMLMouseCursor_SizeS[/b][/td][td]15[/td][td][/td][/tr] [tr=k_EHTMLMouseCursor_SizeWE][td][b]k_EHTMLMouseCursor_SizeWE[/b][/td][td]16[/td][td][/td][/tr] [tr=k_EHTMLMouseCursor_SizeNS][td][b]k_EHTMLMouseCursor_SizeNS[/b][/td][td]17[/td][td][/td][/tr] [tr=k_EHTMLMouseCursor_SizeAll][td][b]k_EHTMLMouseCursor_SizeAll[/b][/td][td]18[/td][td][/td][/tr] [tr=k_EHTMLMouseCursor_No][td][b]k_EHTMLMouseCursor_No[/b][/td][td]19[/td][td][/td][/tr] [tr=k_EHTMLMouseCursor_Hand][td][b]k_EHTMLMouseCursor_Hand[/b][/td][td]20[/td][td][/td][/tr] [tr=k_EHTMLMouseCursor_Blank][td][b]k_EHTMLMouseCursor_Blank[/b][/td][td]21[/td][td]Don't show any custom cursor, just use your default.[/td][/tr] [tr=k_EHTMLMouseCursor_MiddlePan][td][b]k_EHTMLMouseCursor_MiddlePan[/b][/td][td]22[/td][td][/td][/tr] [tr=k_EHTMLMouseCursor_NorthPan][td][b]k_EHTMLMouseCursor_NorthPan[/b][/td][td]23[/td][td][/td][/tr] [tr=k_EHTMLMouseCursor_NorthEastPan][td][b]k_EHTMLMouseCursor_NorthEastPan[/b][/td][td]24[/td][td][/td][/tr] [tr=k_EHTMLMouseCursor_EastPan][td][b]k_EHTMLMouseCursor_EastPan[/b][/td][td]25[/td][td][/td][/tr] [tr=k_EHTMLMouseCursor_SouthEastPan][td][b]k_EHTMLMouseCursor_SouthEastPan[/b][/td][td]26[/td][td][/td][/tr] [tr=k_EHTMLMouseCursor_SouthPan][td][b]k_EHTMLMouseCursor_SouthPan[/b][/td][td]27[/td][td][/td][/tr] [tr=k_EHTMLMouseCursor_SouthWestPan][td][b]k_EHTMLMouseCursor_SouthWestPan[/b][/td][td]28[/td][td][/td][/tr] [tr=k_EHTMLMouseCursor_WestPan][td][b]k_EHTMLMouseCursor_WestPan[/b][/td][td]29[/td][td][/td][/tr] [tr=k_EHTMLMouseCursor_NorthWestPan][td][b]k_EHTMLMouseCursor_NorthWestPan[/b][/td][td]30[/td][td][/td][/tr] [tr=k_EHTMLMouseCursor_Alias][td][b]k_EHTMLMouseCursor_Alias[/b][/td][td]31[/td][td][/td][/tr] [tr=k_EHTMLMouseCursor_Cell][td][b]k_EHTMLMouseCursor_Cell[/b][/td][td]32[/td][td][/td][/tr] [tr=k_EHTMLMouseCursor_ColResize][td][b]k_EHTMLMouseCursor_ColResize[/b][/td][td]33[/td][td][/td][/tr] [tr=k_EHTMLMouseCursor_CopyCur][td][b]k_EHTMLMouseCursor_CopyCur[/b][/td][td]34[/td][td][/td][/tr] [tr=k_EHTMLMouseCursor_VerticalText][td][b]k_EHTMLMouseCursor_VerticalText[/b][/td][td]35[/td][td][/td][/tr] [tr=k_EHTMLMouseCursor_RowResize][td][b]k_EHTMLMouseCursor_RowResize[/b][/td][td]36[/td][td][/td][/tr] [tr=k_EHTMLMouseCursor_ZoomIn][td][b]k_EHTMLMouseCursor_ZoomIn[/b][/td][td]37[/td][td][/td][/tr] [tr=k_EHTMLMouseCursor_ZoomOut][td][b]k_EHTMLMouseCursor_ZoomOut[/b][/td][td]38[/td][td][/td][/tr] [tr=k_EHTMLMouseCursor_Help][td][b]k_EHTMLMouseCursor_Help[/b][/td][td]39[/td][td][/td][/tr] [tr=k_EHTMLMouseCursor_Custom][td][b]k_EHTMLMouseCursor_Custom[/b][/td][td]40[/td][td][/td][/tr] [tr=k_EHTMLMouseCursor_SizeNWSE][td][b]k_EHTMLMouseCursor_SizeNWSE[/b][/td][td]41[/td][td][/td][/tr] [tr=k_EHTMLMouseCursor_SizeNESW][td][b]k_EHTMLMouseCursor_SizeNESW[/b][/td][td]42[/td][td][/td][/tr] [tr=k_EHTMLMouseCursor_last][td][b]k_EHTMLMouseCursor_last[/b][/td][td]43[/td][td]Only used to iterate over all cursors. Custom cursors start from this value and up.[/td][/tr] [/table] [section=typedefs]Typedefs[/section] These are typedefs which are defined for use with ISteamHTMLSurface. …
For more details on discounting, please see [doclink=marketing/discounts]Discounting[/doclink]. If you would like to use a custom discount instead of the official discount listed in the Discount Management page, you are welcome to do so. We would recommend using the official discount listed to guarantee your title is discounted for the duration of the event. …
It includes a new unique animated avatar, avatar frame, animated mini-profile background and an animated profile background. In addition to these assets, you will also need to customize the theme of the profile by entering 5 RGBA colors that make up different sections of the profile. These colors should complement your art, but must not interfere with the legibility of the profile itself. …
[table] [tr][th]Name[/th][th]Value[/th][th]Description[/th][/tr] [tr=k_EGamePerformanceSetting_NotSet][td][b]k_EGamePerformanceSetting_NotSet[/b][/td][td]0[/td][td][/td][/tr] [tr=k_EGamePerformanceSetting_Low][td][b]k_EGamePerformanceSetting_Low[/b][/td][td]1[/td][td][/td][/tr] [tr=k_EGamePerformanceSetting_Medium][td][b]k_EGamePerformanceSetting_Medium[/b][/td][td]2[/td][td][/td][/tr] [tr=k_EGamePerformanceSetting_High][td][b]k_EGamePerformanceSetting_High[/b][/td][td]3[/td][td][/td][/tr] [tr=k_EGamePerformanceSetting_Ultra][td][b]k_EGamePerformanceSetting_Ultra[/b][/td][td]4[/td][td][/td][/tr] [tr=k_EGamePerformanceSetting_Custom][td][b]k_EGamePerformanceSetting_Custom[/b][/td][td]4[/td][td][/td][/tr] [/table] [subsection=ERegisterActivationCodeResult]ERegisterActivationCodeResult[/subsection] Only used internally in Steam. …
If your game did not have any controller and there's players who are using Steam Input, it would be better practice to call [url=https://partner.steamgames.com/doc/api/isteaminput#GetDeviceBindingRevision]GetDeviceBindingRevision[/url] or look at the configuration loaded callback and prompt the user rather than force players who've constructed custom configurations to rebuild them in the new action set structure. [section]Localization[/section] The master IGA file should include a localization section alongside the action set definitions. …
[/list] [docimg=steam_input_gamepad_templates.png]steam_input_gamepad_templates.png[/docimg] Steps for setting the template live for your game in Steamworks can be found [url=https://partner.steamgames.com/doc/features/steam_controller/getting_started_for_devs#23]here[/url] [subsection]Creating a custom configuration[/subsection] Configurations can be auto-converted between most controller types, but you'll at a minimum want to make a Steam Controller and Xbox controller configuration. …
If you are a dedicated server hosting company and want to join our network so that your customers can take advantage of SDR, please get in touch with us! We have not yet deployed relays in any third party hosting companies, however we are interested in doing this. …
You can also change what value the Steam Client returns per device through the Steamworks Partner Site. This allows you to customize the default configuration used on future Steam hardware without recompiling your game. For example, if your game runs well on Steam Machine using your 'high' user preset, but was released before that device became available, you could configure this method to return [code-inline]k_ESteamHardwareDefaultConfigHigh[/code-inline] when run on those devices. …
[b]Returns:[/b] const char * [b]See Also:[/b] [api]ISteamApps::GetCurrentGameLanguage[/api], [api]ISteamApps::GetAvailableGameLanguages[/api] [subsection=InitFilterText]InitFilterText[/subsection] [code=cpp]bool InitFilterText();[/code] Initializes text filtering, loading dictionaries for the language the game is running in. Users can customize the text filter behavior in their [url=https://store.steampowered.com/account/preferences#CommunityContentPreferences]Steam Account preferences[/url] [b]Returns:[/b] bool [b]true[/b] if initialization succeeds, [b]false[/b] if filtering is unavailable for the game's language, in which case [api]ISteamUtils::FilterText[/api]() will act as a passthrough. …