Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
f5d8e66
feat: pano cc
iamsirenstorm Feb 26, 2026
abca84d
feat: menu CC
iamsirenstorm Mar 19, 2026
41e324e
feat: WIP CC customizations
iamsirenstorm Mar 20, 2026
568e73c
feat: CC norepeat
iamsirenstorm Mar 21, 2026
3a976c8
fix: caption appearing outside of box
iamsirenstorm Mar 21, 2026
f67bf62
feat: update Lexend for italics
iamsirenstorm Mar 21, 2026
4a7c54d
chore: formatting
iamsirenstorm Mar 21, 2026
d45997e
Merge CC settings in interface category into audio, replace remaining…
pivotman319-owo Mar 25, 2026
8c84d1a
Update csgo appid, remove legacy hl2 appids
pivotman319-owo Mar 25, 2026
aab58e2
temp disable right-align captions due to weird var storage crap
pivotman319-owo Apr 3, 2026
65c2ec2
Really fix right text alignment
pivotman319-owo Apr 3, 2026
c450b7c
chore: formatting
iamsirenstorm Apr 17, 2026
09c6bf2
feat: graphics notice
iamsirenstorm Apr 17, 2026
38d60c1
feat: move CC tracking to internal
iamsirenstorm Apr 22, 2026
6542b9e
Add CC videos, re-render FoV clip to not use wrong colorspace
pivotman319-owo Apr 28, 2026
c712e4e
chore: disable caption animation as workaround for resolution issues
iamsirenstorm May 3, 2026
20be8c1
chore: formatting!
iamsirenstorm May 3, 2026
7a3bd51
revert: caption anim disable because i fixed it SMILE SMILE SMILE SMI…
iamsirenstorm May 4, 2026
85dfaf9
fix: CC GorDIN font
iamsirenstorm May 7, 2026
e09b827
chore: fix broken loc strings
iamsirenstorm Jun 5, 2026
1d45f47
feat: add source indicator to campaigns in dev mode
iamsirenstorm Jun 8, 2026
684b199
chore(cc): update to renamed APIs
iamsirenstorm May 31, 2026
71d3143
Added russian localization
Laveig Jun 15, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
99 changes: 98 additions & 1 deletion fonts/FontCredits.txt
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
Portal 2: Community Edition uses the following fonts with their respective licenses below:

1. Lexend Deca
1. Lexend / Lexend Deca

Copyright 2018 The Lexend Project Authors (https://github.com/googlefonts/lexend), with Reserved Font Name “RevReading Lexend”.

Expand Down Expand Up @@ -192,3 +192,100 @@ INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
OTHER DEALINGS IN THE FONT SOFTWARE.

3. Noto Sans

Copyright 2022 The Noto Project Authors (https://github.com/notofonts/latin-greek-cyrillic)

This Font Software is licensed under the SIL Open Font License, Version 1.1.
This license is copied below, and is also available with a FAQ at:
https://openfontlicense.org


-----------------------------------------------------------
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
-----------------------------------------------------------

PREAMBLE
The goals of the Open Font License (OFL) are to stimulate worldwide
development of collaborative font projects, to support the font creation
efforts of academic and linguistic communities, and to provide a free and
open framework in which fonts may be shared and improved in partnership
with others.

The OFL allows the licensed fonts to be used, studied, modified and
redistributed freely as long as they are not sold by themselves. The
fonts, including any derivative works, can be bundled, embedded,
redistributed and/or sold with any software provided that any reserved
names are not used by derivative works. The fonts and derivatives,
however, cannot be released under any other type of license. The
requirement for fonts to remain under this license does not apply
to any document created using the fonts or their derivatives.

DEFINITIONS
"Font Software" refers to the set of files released by the Copyright
Holder(s) under this license and clearly marked as such. This may
include source files, build scripts and documentation.

"Reserved Font Name" refers to any names specified as such after the
copyright statement(s).

"Original Version" refers to the collection of Font Software components as
distributed by the Copyright Holder(s).

"Modified Version" refers to any derivative made by adding to, deleting,
or substituting -- in part or in whole -- any of the components of the
Original Version, by changing formats or by porting the Font Software to a
new environment.

"Author" refers to any designer, engineer, programmer, technical
writer or other person who contributed to the Font Software.

PERMISSION & CONDITIONS
Permission is hereby granted, free of charge, to any person obtaining
a copy of the Font Software, to use, study, copy, merge, embed, modify,
redistribute, and sell modified and unmodified copies of the Font
Software, subject to the following conditions:

1) Neither the Font Software nor any of its individual components,
in Original or Modified Versions, may be sold by itself.

2) Original or Modified Versions of the Font Software may be bundled,
redistributed and/or sold with any software, provided that each copy
contains the above copyright notice and this license. These can be
included either as stand-alone text files, human-readable headers or
in the appropriate machine-readable metadata fields within text or
binary files as long as those fields can be easily viewed by the user.

3) No Modified Version of the Font Software may use the Reserved Font
Name(s) unless explicit written permission is granted by the corresponding
Copyright Holder. This restriction only applies to the primary font name as
presented to the users.

4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
Software shall not be used to promote, endorse or advertise any
Modified Version, except to acknowledge the contribution(s) of the
Copyright Holder(s) and the Author(s) or with their explicit written
permission.

5) The Font Software, modified or unmodified, in part or in whole,
must be distributed entirely under this license, and must not be
distributed under any other license. The requirement for fonts to
remain under this license does not apply to any document created
using the Font Software.

TERMINATION
This license becomes null and void if any of the above conditions are
not met.

DISCLAIMER
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
OTHER DEALINGS IN THE FONT SOFTWARE.

Binary file not shown.
Binary file added fonts/Lexend-BlackItalic.ttf
Binary file not shown.
Binary file not shown.
Binary file added fonts/Lexend-BoldItalic.ttf
Binary file not shown.
Binary file not shown.
Binary file added fonts/Lexend-ExtraBoldItalic.ttf
Binary file not shown.
Binary file not shown.
Binary file added fonts/Lexend-ExtraLightItalic.ttf
Binary file not shown.
Binary file not shown.
Binary file added fonts/Lexend-LightItalic.ttf
Binary file not shown.
Binary file not shown.
Binary file added fonts/Lexend-MediumItalic.ttf
Binary file not shown.
Binary file not shown.
Binary file added fonts/Lexend-RegularItalic.ttf
Binary file not shown.
Binary file not shown.
Binary file added fonts/Lexend-SemiBoldItalic.ttf
Binary file not shown.
Binary file not shown.
Binary file added fonts/Lexend-ThinItalic.ttf
Binary file not shown.
Binary file added fonts/NotoSans-Black.ttf
Binary file not shown.
Binary file added fonts/NotoSans-BlackItalic.ttf
Binary file not shown.
Binary file added fonts/NotoSans-Bold.ttf
Binary file not shown.
Binary file added fonts/NotoSans-BoldItalic.ttf
Binary file not shown.
Binary file added fonts/NotoSans-ExtraBold.ttf
Binary file not shown.
Binary file added fonts/NotoSans-ExtraBoldItalic.ttf
Binary file not shown.
Binary file added fonts/NotoSans-ExtraLight.ttf
Binary file not shown.
Binary file added fonts/NotoSans-ExtraLightItalic.ttf
Binary file not shown.
Binary file added fonts/NotoSans-Italic.ttf
Binary file not shown.
Binary file added fonts/NotoSans-Light.ttf
Binary file not shown.
Binary file added fonts/NotoSans-LightItalic.ttf
Binary file not shown.
Binary file added fonts/NotoSans-Medium.ttf
Binary file not shown.
Binary file added fonts/NotoSans-MediumItalic.ttf
Binary file not shown.
Binary file added fonts/NotoSans-Regular.ttf
Binary file not shown.
Binary file added fonts/NotoSans-SemiBold.ttf
Binary file not shown.
Binary file added fonts/NotoSans-SemiBoldItalic.ttf
Binary file not shown.
Binary file added fonts/NotoSans-Thin.ttf
Binary file not shown.
Binary file added fonts/NotoSans-ThinItalic.ttf
Binary file not shown.
Binary file added fonts/stratum2bold.ttf
Binary file not shown.
Binary file removed fonts/stratum2bold.vfont
Binary file not shown.
Binary file added fonts/stratum2bold_monodigit.ttf
Binary file not shown.
Binary file removed fonts/stratum2bold_monodigit.vfont
Binary file not shown.
Binary file added fonts/stratum2light.ttf
Binary file not shown.
Binary file removed fonts/stratum2light.vfont
Binary file not shown.
Binary file added fonts/stratum2medium.ttf
Binary file not shown.
Binary file removed fonts/stratum2medium.vfont
Binary file not shown.
Binary file added fonts/stratum2regular.ttf
Binary file not shown.
Binary file removed fonts/stratum2regular.vfont
Binary file not shown.
Binary file added fonts/stratum2regular_monodigit.ttf
Binary file not shown.
Binary file removed fonts/stratum2regular_monodigit.vfont
Binary file not shown.
Binary file added fonts/univercb.ttf
Binary file not shown.
Binary file added fonts/univercb_t.ttf
Binary file not shown.
Binary file added fonts/univercl.ttf
Binary file not shown.
Binary file added fonts/univercl_t.ttf
Binary file not shown.
Binary file added fonts/universc.ttf
Binary file not shown.
Binary file added fonts/universc_t.ttf
Binary file not shown.
3 changes: 2 additions & 1 deletion layout/components/item-source.xml
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,9 @@
<include src="file://{resources}/styles/main.scss" />
</styles>
<Panel class="m-1 vertical-align-bottom">
<TooltipPanel class="fancy-blue p-1" tooltip="#UI_Source_Steam">
<TooltipPanel id="TooltipPanel" class="p-1">
<Image
id="ImagePanel"
scaling="stretch-to-fit-preserve-aspect"
src="file://{images}/icons/steam.svg"
texturewidth="32"
Expand Down
11 changes: 11 additions & 0 deletions layout/hud/cc.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
<root>
<styles>
<include src="file://{resources}/styles/main.scss" />
</styles>
<scripts>
<include src="file://{scripts}/hud/cc.ts" />
</scripts>
<Panel class="full-width full-height" hittest="false" hittestchildren="false">
<Panel id="CaptionsBox" class="closecaptions__inner" />
</Panel>
</root>
2 changes: 2 additions & 0 deletions layout/hud/hud.xml
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,8 @@
<WeaponSwitcher />
</Panel>

<ClosedCaptions id="ClosedCaptions" />

<!-- Make sure these are at the bottom to get the z-order right -->
<PopupManager id="PopupManager" onpopupsdismissed="" />
<ContextMenuManager id="ContextMenuManager" />
Expand Down
2 changes: 1 addition & 1 deletion layout/pages/campaigns/campaign-selector.xml
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@
textureheight="64"
/>
</TooltipPanel>
<SourceIndicator class="hide" id="SourceIndicator" />
<SourceIndicator id="SourceIndicator" />
</Panel>
<!-- Campaign info; title, description, 'source' -->
<Panel class="campaigns__entry__details">
Expand Down
5 changes: 4 additions & 1 deletion layout/pages/main-menu/base-menu.xml
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,10 @@
</Panel>

<Panel class="horizontal-align-right flow-down m-3">
<Panel class="horizontal-align-right flow-right">
<Panel class="bordered-window p-3" style="max-width: 512px;">
<Label class="horizontal-align-center text-align-center" html="true" text="#MainMenu_Graphics_Notice" />
</Panel>
<Panel class="horizontal-align-right flow-right mt-1">
<TooltipPanel tooltip="#MainMenu_Socials_GitHub">
<Button class="button button-2x" onactivate="SteamOverlayAPI.OpenURL('https://p2ce.org/issues')">
<Image class="button__icon" texturewidth="64" textureheight="64" src="file://{images}/social/github.svg" />
Expand Down
77 changes: 77 additions & 0 deletions layout/pages/settings/audio.xml
Original file line number Diff line number Diff line change
Expand Up @@ -185,6 +185,83 @@
<RadioButton group="cc_subtitles" text="#Common_On" value="1" />
</SettingsEnum>

<SettingsEnumDropDown
text="#Settings_ClosedCaptions_Font"
infomessage="#Settings_ClosedCaptions_Font_info"
psvar="cc.font"
tags="cc,closecaption,captions,audio,font"
submitoverride="$.DispatchEvent('ReloadCCSettings')"
>
<Label text="#Settings_ClosedCaptions_Font_Lexend" value="0" id="ccfont0" />
<Label text="#Settings_ClosedCaptions_Font_U0001" value="1" id="ccfont1" />
<Label text="#Settings_ClosedCaptions_Font_GorDIN" value="2" id="ccfont2" />
<Label text="#Settings_ClosedCaptions_Font_Verdana" value="3" id="ccfont3" />
<Label text="#Settings_ClosedCaptions_Font_NotoSans" value="4" id="ccfont4" />
<Label text="#Settings_ClosedCaptions_Font_Stratum2" value="5" id="ccfont5" />
</SettingsEnumDropDown>

<SettingsSlider
text="#Settings_ClosedCaptions_FontSize"
infomessage="#Settings_ClosedCaptions_FontSize_info"
convar="cc_panorama_font_size"
tags="cc,closecaption,captions,audio,font,font size,size"
min="18"
max="26"
snaptoincrement="true"
increment="0.125"
hasdocspage="false"
changeoverride="$.DispatchEvent('ReloadCCSettings')"
/>

<SettingsSlider
text="#Settings_ClosedCaptions_BGOpacity"
infomessage="#Settings_ClosedCaptions_BGOpacity_info"
convar="cc_panorama_bg_opacity"
min="0"
max="1"
displayprecision="2"
hasdocspage="false"
changeoverride="$.DispatchEvent('ReloadCCSettings')"
/>

<SettingsSlider
text="[HC] Text Margin"
infomessage="[HC] Text Margin"
convar="cc_panorama_entry_margin"
min="2"
max="10"
snaptoincrement="true"
increment="0.125"
hasdocspage="false"
changeoverride="$.DispatchEvent('ReloadCCSettings')"
/>

<SettingsEnum
text="#Settings_ClosedCaptions_Alignment"
infomessage="#Settings_ClosedCaptions_Alignment_info"
psvar="cc.text_align"
tags="cc,closecaption,captions,audio,alignment"
>
<RadioButton
group="ccalign"
text="#Settings_ClosedCaptions_Alignment_left"
value="0"
activateoverride="$.DispatchEvent('ReloadCCSettings')"
/>
<RadioButton
group="ccalign"
text="#Settings_ClosedCaptions_Alignment_center"
value="1"
activateoverride="$.DispatchEvent('ReloadCCSettings')"
/>
<RadioButton
group="ccalign"
text="#Settings_ClosedCaptions_Alignment_right"
value="2"
activateoverride="$.DispatchEvent('ReloadCCSettings')"
/>
</SettingsEnum>

</Panel>

<Panel class="settings-page__spacer" />
Expand Down
28 changes: 15 additions & 13 deletions layout/pages/settings/interface.xml
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@
text="#Settings_Menu_Sentry"
infomessage="#Settings_Menu_Sentry_info"
hasdocspage="false"
tags="sentry"
tags="sentry, consent"
>
<Button class="button horizontal-align-right vertical-align-center" onactivate="SettingsShared.sentryUpdateConsent()">
<Label class="button__text" text="#Settings_Menu_Sentry_ConsentButton" />
Expand All @@ -61,23 +61,25 @@
infomessage="#Settings_Menu_DiscordIntegration_info"
convar="cl_richpresence_enable"
hasdocspage="false"
tags="richpresence"
tags="richpresence, discord, rich presence"
>
<RadioButton group="enablerpc" text="#Common_Off" value="0" />
<RadioButton group="enablerpc" text="#Common_On" value="1" />
</SettingsEnum>

<SettingsEnum
text="Playtest Consent (DO NOT LOCALIZE)"
infomessage="Playtest Consent (DO NOT LOCALIZE)"
convar="cl_playtest_enabled"
hasdocspage="false"
tags="consent"
>
<RadioButton group="enableconsent" text="#Common_Off" value="0" />
<RadioButton group="enableconsent" text="#Common_On" value="1" />
</SettingsEnum>

<ConVarEnabler convar="developer" togglevisibility="true">
<SettingsEnum
text="Playtest Consent (DO NOT LOCALIZE)"
infomessage="Playtest Consent (DO NOT LOCALIZE)"
convar="cl_playtest_enabled"
hasdocspage="false"
tags="consent"
>
<RadioButton group="enableconsent" text="#Common_Off" value="0" />
<RadioButton group="enableconsent" text="#Common_On" value="1" />
</SettingsEnum>
</ConVarEnabler>

<ConVarEnabler convar="developer" togglevisibility="true" hittest="false">
<SettingsEnum
id="PlaytestDOSARemove"
Expand Down
35 changes: 27 additions & 8 deletions localization/panorama_english.txt
Original file line number Diff line number Diff line change
Expand Up @@ -324,8 +324,8 @@
"UI_Backspace" "Backspace"
"UI_Spacebar" "Space"
"UI_MoveCaret" "Move Cursor"
"UI_MoveCaretLeft" "뿯½ Cursor"
"UI_MoveCaretRight" "Cursor 뿯½"
"UI_MoveCaretLeft" "< Cursor"
"UI_MoveCaretRight" "Cursor >"
"UI_InputDone" "Done"
"UI_MoreOptions" "More Options"
"UI_SendMessage" "Send"
Expand Down Expand Up @@ -554,9 +554,28 @@

"Settings_ClosedCaptions_Title" "Closed Captions and Subtitles"
"Settings_ClosedCaptions_Enable" "Closed Captions"
"Settings_ClosedCaptions_Enable_info" "Turns on captions for hearing-impaired users. Noises and spoken dialog will be displayed on-screen for a period of time.<br><img src=\"file://{images}/menu/p2ce-generic.png\" />"
"Settings_ClosedCaptions_Enable_info" "Turns on captions for hearing-impaired users. Noises and spoken dialog will be displayed on-screen for a period of time.\n<movie src=\"file://{videos}/settings/cc.webm\" />"
"Settings_ClosedCaptions_Subtitles" "Subtitles"
"Settings_ClosedCaptions_Subtitles_info" "Enabling this option will cause dialog to only be displayed on-screen. Requires the Closed Captions setting to be enabled."
"Settings_ClosedCaptions_Subtitles_info" "Enabling this option will cause dialog to only be displayed on-screen. Requires the Closed Captions setting to be enabled.\n<movie src=\"file://{videos}/settings/cc_subtitles.webm\" />"

// Storm - CC System Rewrite
"Settings_ClosedCaptions_Font" "Font"
"Settings_ClosedCaptions_Font_info" "Determines which typeface to use for on-screen subtitles and closed captions.\n<movie src=\"file://{videos}/settings/cc_font.webm\" />"
"Settings_ClosedCaptions_Font_Lexend" "Lexend (P2:CE / Strata Source)"
"Settings_ClosedCaptions_Font_U0001" "Univers (Portal 2)"
"Settings_ClosedCaptions_Font_GorDIN" "DIN 1451 / GorDIN (Half-Life 2)"
"Settings_ClosedCaptions_Font_Verdana" "Verdana (Legacy)"
"Settings_ClosedCaptions_Font_NotoSans" "Noto Sans (Deck Gamepad UI)"
"Settings_ClosedCaptions_Font_Stratum2" "Stratum2 (CS:GO)"
"Settings_ClosedCaptions_FontSize" "Font Size"
"Settings_ClosedCaptions_FontSize_info" "Determines how large should on-screen subtitles and closed captions appear to the user. Calculated in points per pixel (pt)."
"Settings_ClosedCaptions_BGOpacity" "Background Opacity"
"Settings_ClosedCaptions_BGOpacity_info" "Controls the opacity of the background panel for on-screen captions.\nLower values may result in worse visibility, and can cause legibility problems. A darker background (or pure pitch-black) is recommended for best legibility and visibility."
"Settings_ClosedCaptions_Alignment" "Text Alignment"
"Settings_ClosedCaptions_Alignment_info" "Aligns the position of on-screen captions."
"Settings_ClosedCaptions_Alignment_left" "Left"
"Settings_ClosedCaptions_Alignment_center" "Center"
"Settings_ClosedCaptions_Alignment_right" "Right"

"Settings_Audio_HRTF_Async_Title" "Threaded Audio"
"Settings_Audio_HRTF_Async_Desc" "Splits individual audio channels into multiple CPU threads to improve performance."
Expand Down Expand Up @@ -1067,8 +1086,8 @@ Please install and mount the above games first to access this campaign."
"MainMenu_Campaigns_Mounts_AppId_630" "Alien Swarm (630)"
"MainMenu_Campaigns_Mounts_AppId_300" "Day of Defeat: Source (300)"
"MainMenu_Campaigns_Mounts_AppId_220" "Half-Life 2 (220)"
"MainMenu_Campaigns_Mounts_AppId_380" "Half-Life 2: Episode One (380)"
"MainMenu_Campaigns_Mounts_AppId_420" "Half-Life 2: Episode Two (420)"
"MainMenu_Campaigns_Mounts_AppId_280" "Half-Life: Source (280)"
"MainMenu_Campaigns_Mounts_AppId_400" "Portal (400)"
"MainMenu_Campaigns_Mounts_AppId_660" "Portal 2 - Sixense MotionPack (660)"
Expand All @@ -1077,7 +1096,7 @@ Please install and mount the above games first to access this campaign."
"MainMenu_Campaigns_Mounts_AppId_500" "Left 4 Dead (500)"
"MainMenu_Campaigns_Mounts_AppId_550" "Left 4 Dead 2 (550)"
"MainMenu_Campaigns_Mounts_AppId_240" "Counter-Strike: Source (240)"
"MainMenu_Campaigns_Mounts_AppId_730" "Counter-Strike: Global Offensive - Legacy Source 1 Build (730)"
"MainMenu_Campaigns_Mounts_AppId_4465480" "Counter-Strike: Global Offensive (4465480)"

// temp for better solution
"MainMenu_Campaigns_MountRequired_Header" "Game Mount Missing"
Expand Down Expand Up @@ -1180,7 +1199,7 @@ Please install and mount the above games first to access this campaign."
"MainMenu_Campaigns_Setup_Var_sv_cheats" "Enable Server Cheats"
"MainMenu_Campaigns_Setup_Var_sv_cheats_Description" "Enables access to special commands flagged as \"cheats\", such as <pre>noclip</pre>, <pre>impulse</pre>, and <pre>ent_fire</pre>.\n\nDefault: Off"
"MainMenu_Campaigns_Setup_Var_p2p" "Use Steam Networking"
"MainMenu_Campaigns_Setup_Var_p2p_Description" "Uses the <a href="https://partner.steamgames.com/doc/features/multiplayer/steamdatagramrelay">Steam Datagram Relay</a> to enable hosting peer-to-peer (P2P) and dedicated servers over the Internet with minimal technical setup. Game traffic is sent to Valve relay servers to anonymize player information and protect the server host."
"MainMenu_Campaigns_Setup_Var_p2p_Description" "Uses the <a href=\"https://partner.steamgames.com/doc/features/multiplayer/steamdatagramrelay\">Steam Datagram Relay</a> to enable hosting peer-to-peer (P2P) and dedicated servers over the Internet with minimal technical setup. Game traffic is sent to Valve relay servers to anonymize player information and protect the server host."

// CampaignSetupDiscardDialog
"MainMenu_Campaigns_Setup_Discard_Title" "Discard Changes"
Expand Down
Loading