Portal 2 Rules

This document aims to provide an overview of rules for speedrunning Portal 2 and its mods. Most rules are universally applicable, however, every category will have exceptions and/or additional rules. Every rule detailed in the "General Rules" section below may be overruled within a category - for this reason, you should make sure to read all rules relevant to the category you are running.

Also note that this set of rules is not exhaustive on lists of commands or more generally on banned actions. If anything seems at all ambiguous to you or you're not sure if something is allowed, please consult a board moderator for the category in question. Lists of moderators can be found in the category's section below.

Definitions

Commands

In the game's console, you can execute commands, as well as bind keys to execute commands. We define several classes of command.

"Functional Commands" are commands which have some effect on the run or the runner's ability to perform it. The vast majority of commands fit into this category - effectively the only ones that don't are ones which impact timing, such as sar_speedrun_result, and purely cosmetic ones, such as sar_hud_set_text.

"Action Commands" are a subset of functional commands defined as any command which has a direct effect on the game world. This includes all player movement commands (+forward, -forward, +duck, etc), as well as commands such as load.

Pause Abuse

Pause Abuse is defined as using game pauses (via the ESC key, gameui commands, or opening the developer console) to affect the chance of some event occurring, make an event possible, or otherwise contribute to the run. For instance, the Betsrighter jump in sp_a1_wakeup can be done far more consistently by console pausing as you land - as such, pausing at this moment in the run is considered pause abuse, as it affects your chances of getting the jump. More subtly, pausing while lining up a precise shot is also pause abuse, since the time you are paused can allow you time to read your coordinates and prepare to move your mouse correctly.

Save/Load Abuse (SLA)

Save/Load Abuse (SLA) is defined as using any unnatural load or level transition (i.e. anything other than touching a changelevel trigger in the map) in order to affect the chance of some event occurring or make an event possible. For instance, saveload clipping is considered SLA, since it achieves an effect which would otherwise be impossible. Similarly, loading saves to retry lucky door skip in sp_a2_bridge_the_gap is SLA, as it affects the overall chance of successfully getting through the door. Exceptions are made to this rule for physics RNG specifically, so that loading saves and getting different physics RNG is not considered SLA, since this RNG is prevalent to the point of being unavoidable.

Out of Bounds (OOB)

The Source Engine has a strict technical definition of whether a point is "out of bounds" based on its BSP world system (a point is out of bounds if it is in a CONTENTS_SOLID leaf and not within a brush). We define the player themselves as being out of bounds if a) the player's eye position goes out of bounds or b) all 8 vertices of the player's bounding box go out of bounds.

General Rules

Commands

IF YOU ARE UNSURE WHETHER A COMMAND IS ALLOWED, CHECK WITH A MODERATOR FOR YOUR CATEGORY BEFORE USING IT.

The game contains a wide array of commands and variables (cvars) which can be used to achieve various effects. Commands are banned or allowed considering several criteria. All commands accessible in normal gameplay (e.g. common movement commands, save/load) are allowed. Other commands receive rulings based on their interaction with the rest of the game, their similarity to other commands, and how they fit in with other rules. If you're not sure whether a command is allowed, you should speak to a moderator for the category you are running.

Allowed commands can be categorised as "action commands", "functional commands", and "non-functional commands" (note that all action commands are also functional commands). Any allowed command may be manually executed by typing it into the console at any point, including executing such commands indirectly through exec or aliases.

HUDs

SAR and the game itself provide various HUDs to the user, accessible through console commands. In general, a HUD provided by SAR is allowed only if there is an equivalent HUD allowed which the base game provides. The command list below exhaustively lists all known allowed HUDs.

HUDs containing unchanging, predetermined user-provided text or content - such as through sar_hud_set_text or sar_toast_create - are always allowed, even if they are giving information about the run, such as dialogue fades or lineups.

Graphics

Most commands affecting the game's graphics are allowed to be used, and are not classed as functional commands. This is because using these commands is sometimes required for good performance on lower-end hardware. This includes most commands starting r_ provided they do not make parts of the world invisible or cause other major differences to default behaviour.

Crosshairs

The game's default crosshair size (including quickhud) has a fixed pixel size. Custom crosshairs via sar_crosshair and sar_quickhud are permitted only with specific assets and parameters, to get a crosshair equivalent to the default on a different resolution. The crosshair used must may change throughout the run. If you wish to use a custom crosshair, ask a moderator for your category for an allowed configuration.

Command List

This list details the allowed values for every SAR command as well as a lot of base game commands. Please note that any category can override any of these rulings. An allowed value of - means that any value is permitted.

Command Type Allowed Values
+attack / -attackAction-
+attack2 / -attack2Action-
+back / -backAction-
+coop_pingAction-
-coop_pingFunctional-
+duck / -duckAction-
+forward / -forwardAction-
+left / -leftAction-
+mouse_menuFunctional-
-mouse_menuAction-
+movedown / -movedownAction-
+moveleft / -moveleftAction-
+moveright / -moverightAction-
+quick_pingAction-
-quick_pingFunctional-
+remote_view / -remote_viewFunctional-
+right / -rightAction-
+use / -useAction-
+zoom / -zoomFunctional-
autosaveFunctional-
cc_langNon-functional-
cc_subtitlesNon-functional-
cl_backspeedFunctional0 .. 175
cl_forwardspeedFunctional0 .. 175
cl_fovFunctional45 .. 140
cl_showposFunctional0, 1
cl_sidespeedFunctional0 .. 175
con_drawnotifyFunctional-
con_filter_enableFunctional-
con_filter_text_outFunctional-
condInherited-
condsInherited-
contimesFunctional-
developerFunctional0, 1
fps_maxFunctional30 .. 999
ghost_*Non-functional-
ghost_prop_modelBanned-
ghost_typeNon-functional0, 1, 4
hwaitNon-functionalNon-functional commands only
loadAction-
m_rawinputFunctional-
m_yawFunctional-
mat_ambient_light_bNon-functional-
mat_ambient_light_gNon-functional-
mat_ambient_light_rNon-functional-
mat_fullbrightNon-functional0, 1
mat_motion_blur_enabledNon-functional-
mat_specularNon-functional-
mat_vsyncNon-functional-
net_graphNon-functional-
nopNon-functional-
r_PortalTestEntsNon-functional-
r_portal_fastpathNon-functional-
r_portal_use_pvs_optimizationNon-functional-
sar_aboutNon-functional-
sar_achievement_tracker_*Non-functional-
sar_aim_point_*Banned-
sar_aircontrolBanned-
sar_aliasNon-functional-
sar_alias_runInherited-
sar_allow_resizing_windowNon-functional-
sar_always_transmit_heavy_entsNon-functional-
sar_autojumpBanned-
sar_autorecordNon-functional-
sar_avg_*Non-functional-
sar_bink_respect_host_timeNon-functional-
sar_cam_*Banned-
sar_challenge_autostopNon-functional-
sar_challenge_autosubmit_reload_api_keyNon-functional-
sar_chatNon-functional-
sar_cheat_hud_*Non-functional-
sar_check_updateNon-functional-
sar_clear_linesNon-functional-
sar_cm_rightwarpNon-functional-
sar_con_filter_*Non-functional-
sar_coop_reset_progressBanned-
sar_cps_*Non-functional-
sar_crosshair_*Non-functionalPre-defined allowed values, see above
sar_cvarlistNon-functional-
sar_cvars_*Banned-
sar_debug_listenerBanned-
sar_delete_alias_cmdsNon-functional-
sar_demo_blacklist_*Non-functional-
sar_demo_overwrite_bakNon-functional-
sar_demo_portal_interp_fixNon-functional-
sar_demo_remove_brokenNon-functional-
sar_demo_replayBanned-
sar_disable_challenge_stats_hudNon-functional-
sar_disable_coop_score_hudNon-functional-
sar_disable_no_focus_sleepNon-functional-
sar_disable_progress_bar_updateNon-functional-
sar_disable_save_status_hudNon-functional-
sar_disable_steam_pauseNon-functional-
sar_disable_weapon_swayNon-functional-
sar_dpi_scaleFunctional-
sar_drawline_*Banned-
sar_duckjumpBanned-
sar_dump_*Banned-
sar_echoNon-functional-
sar_echo_nolfNon-functional-
sar_ei_*Banned-
sar_ent_infoBanned-
sar_ent_slot_serialBanned-
sar_exitFunctional-
sar_expandInherited-
sar_export_statsNon-functional-
sar_fast_load_presetNon-functional-
sar_fcps_*Banned-
sar_find_client_classBanned-
sar_find_entBanned-
sar_find_entsBanned-
sar_find_server_classBanned-
sar_fix_reloaded_cheatsNon-functional-
sar_font_*Non-functional-
sar_force_fovFunctional45 .. 140
sar_force_qcBanned-
sar_force_viewmodel_fovFunctional-
sar_functionNon-functional-
sar_function_runInherited-
sar_geteyeposBanned-
sar_getposBanned-
sar_give_betsrighterBanned-
sar_give_flyBanned-
sar_groundframes_*Non-functional-
sar_hud_*Functional-
sar_hud_ent_slot_serialBanned-
sar_hud_eyeoffsetBanned-
sar_hud_inspectionBanned-
sar_hud_precisionFunctional0 .. 6
sar_hud_tbeamBanned-
sar_hud_tbeam_countBanned-
sar_hud_traceBanned-
sar_hud_velocity_precisionFunctional0 .. 2
sar_ihud_*Non-functional-
sar_import_statsNon-functional-
sar_inspection_*Banned-
sar_jumpboostBanned-
sar_list_client_classesBanned-
sar_list_entsBanned-
sar_list_server_classesBanned-
sar_load_delayNon-functional-
sar_loads_norenderNon-functional-
sar_loads_uncapNon-functional-
sar_lphud_*Non-functional-
sar_minimap_*Non-functional-
sar_mtrigger_legacy_*Non-functional-
sar_nextdemoBanned-
sar_on_*Non-functionalNon-functional commands only
sar_paint_reseedBanned-
sar_patch_bhopBanned-
sar_patch_cfgBanned-
sar_pause_atBanned-
sar_pause_forBanned-
sar_pip_alignNon-functional-
sar_portalgun_hud_*Banned-
sar_portals_thru_portalsBanned-
sar_pp_hud_*Banned-
sar_prevent_ehmNon-functional-
sar_prevent_mat_snapshot_recomputeNon-functional-
sar_print_statsNon-functional-
sar_quickhud_*Non-functionalPre-defined allowed values, see above
sar_record_at_*Non-functional-
sar_record_mkdirNon-functional-
sar_record_prefixNon-functional-
sar_renameNon-functional-
sar_render_*Banned-
sar_rng_*Banned-
sar_ruler_*Banned-
sar_scrollspeedNon-functional-
sar_seamshot_finderBanned-
sar_sessionNon-functional-
sar_show_entinpBanned-
sar_skiptodemoBanned-
sar_speedrun_*Non-functional-
sar_sr_hud_*Non-functional-
sar_startdemosBanned-
sar_startdemosfolderBanned-
sar_statcounter_filepathNon-functional-
sar_stats_*Non-functional-
sar_stitcher_*Banned-
sar_stopFunctional-
sar_strafe_quality_*Non-functional-
sar_strafesync_*Non-functional-
sar_sum_*Non-functional-
sar_tas_*Banned-
sar_teleportBanned-
sar_teleport_setposNon-functional-
sar_tick_debugBanned-
sar_time_demoBanned-
sar_time_demo_devBanned-
sar_time_demosBanned-
sar_timer_*Non-functional-
sar_toast_*Non-functional-
sar_toast_createNon-functional-
sar_togglewaitBanned-
sar_trace_*Banned-
sar_updateNon-functional-
sar_velocitygraph_*Non-functional-
sar_vphys_hud_*Banned-
sar_vphys_setangleBanned-
sar_vphys_setasleepBanned-
sar_vphys_setgravityBanned-
sar_vphys_setspinBanned-
sar_workshop_*Banned-
saveFunctional-
save_history_countNon-functional-
save_screenshotNon-functional-
sayNon-functional-
sensitivityFunctional-
seqNon-functionalNon-functional commands only
stopvideos (in a cutscene video)Action-
stopvideos (in coop level transition)Non-functional-
sv_zoom_stop_movement_threasholdFunctional-
sv_zoom_stop_time_threasholdFunctional-
svar_*Non-functional-
ui_loadingscreen_fadein_timeNon-functional-
ui_loadingscreen_mintransition_timeNon-functional-
ui_loadingscreen_transition_timeNon-functional-
ui_transition_effectNon-functional-
viewmodel_offset_xNon-functional-
viewmodel_offset_yNon-functional-
viewmodel_offset_zNon-functional-
vm_debugFunctional-
waitNon-functionalNon-functional commands only
wait_forNon-functionalNon-functional commands only
wait_modeNon-functional-
wait_persist_across_loadsNon-functional-
wait_toNon-functionalNon-functional commands only
zoom_sensitivity_ratioFunctional-

Scripting

Any time a key is pressed or released, an arbitrary amount of allowed commands may be executed. These may include up to one action command. Any functional commands in the sequence must be executed without delay. For other commands, delay is permitted, e.g. through SAR's hwait command. Note that scrolling the mouse wheel a single tick counts as pressing and immediately releasing the "key" of the mouse wheel.

Automation of commands may be achieved through mechanisms like the sar_on_load command. This is limited to non-functional commands during the run; however, note that in Challenge Mode, automatically running functional commands is allowed provided the command could have been performed manually prior to the run with the same effect. Examples of this include changing sensitivity or mat_fullbright.

Pre-Run Setup

It is not allowed to perform any setup for a glitch or exploit before the run. For instance, you cannot use map logic or otherwise to modify the value of sv_allow_mobile_portals before the run, nor can you load into maps so as to set up EHM, nor prepare CM Wrong Warp.

External Modifications

Currently, the only permitted external modification for use in runs is SourceAutoRecord (SAR) on the latest full release or a later pre-release.

Custom builds of SAR are not allowed - only the releases from the official GitHub repository may be used. Other external modifications, such as game plugins or code injectors, are not allowed. Runs performed with SAR pre-releases may be retroactively banned if a pre-release is found to provide some advantage. While unlikely, you acknowledge that by using a SAR pre-release you are putting your runs at risk. When a new full release of SAR is made available, there is a grace period of 1 week in which the previous full release is still allowed.

Exceptions may be made on a case-by-case basis: if you think you have a legitimate case for using an external modification which isn't listed here, consult a moderator for the category you're running.

Asset Modifications

We have strict rules regarding which assets are allowed to be changed from their defaults during runs, which (unless otherwise specified) are shared across all games and categories. These rules vary depending on the kind of asset being modified.

General Rules

Any asset modifications are subject to being grounds for the rejection or removal of any run on speedrun.com or the cm boards.

When assets are required to be submitted alongside a run, these assets must adhere to the TOS of all platforms involved in your submission, including both the site the run is submitted to and any sites linked from the submission.

Editing binary files (including .DLL, .EXE, .SO, A.OUT, .DYLIB, or .APP) files which are present in the game or Steam directory to modify an asset is not allowed.

Modpacks, which are curated by the moderators, are allowed to be used in runs without restrictions. These modpacks can be found in the #resources channel of the P2SR discord. Other than modpacks, you can only modify the assets listed on this Google Doc.

OOB

Some categories are marked as "inbounds", which essentially means the player and all portals and props must stay inbounds at all times. More precisely, we say that the player, all portal origins, and all prop origins must remain inbounds at all times, except where the game requires otherwise (e.g. certain level transitions place the player temporarily OOB).

Exceptions can be made to this rule in accidental cases where the rule is briefly broken. In particular, if an extreme eye offset from a portal transition causes the player's eye to momentarily peek OOB, but this is not abused, it would not be grounds for even a high-level run to be rejected.

Cooperative Play

In any online cooperative run, both players (not just the host) must provide appropriate proof for the run. The proof requirements are unaffected for local splitscreen runs.

The network conditions used in online coop are regulated. Any use of packet loss which benefits the player is banned. Ping-based advantages, however, are allowed - you may artificially increase ping through external means, such as a VPN, but not through the net_fakelag command. Similarly, net_fakenoise, net_fakejitter, and net_fakeloss are not allowed under any circumstances.

Miscellaneous

Timing

Most runs use demo time for timing (the main notable exception is Challenge Mode, which uses its integrated timer). Even when not recording demos, SAR's timer perfectly emulates demo timing (except in CM where it emulates the integrated timer), so is recommended for use most of the time. For video submissions, which are required to have a timer visible on-screen, the timer HUD from sar_sr_hud may be used. Alternatively, SAR's integrated timer may be linked to external speedrun timers such as LiveSplit or adrift, and these may be overlaid on the video.

If using pause abuse (in a category where it is allowed), the pauses in question must be timed. This can be done using sar_speedrun_time_pauses 1, or manually with video evidence.

To ensure the run is not affected by network conditions, cooperative runs are timed differently. The inter-level timing standard for coop is defined per-game.

Proof Standards

Unless otherwise noted in category rules, all runs most have some form of proof associated with them, which could be in the form of a video or of demo(s). Most categories will require demo proof for runs above a certain rank. Demos are generally encouraged over videos as they have several tangible advantages.

Videos submitted as proof must have an accepted timer visible on the screen. They must always be submitted as a single continuous video, and must not have any severe quality or framerate issues which impact viewability.

Demos must be submitted for every segment of the run, in the correct order, with none missing. You must start recording demos before the run begins where possible, or otherwise as soon as you can - it is recommended to use sar_record_at to achieve this. On runs with multiple segments, demos must be recorded across loads - this is normally expected to be achieved via the sar_autorecord command, but categories may define different methods.

For any category other than Challenge Mode, any custom .vpk files active during the run must be included in the run submission. They can be uploaded to a site such as Google Drive along with the demo files.

Games

Portal 2

General

When running a non-splitscreen cooperative category, progress must be entirely reset before every run. It is recommended to do this using sar_coop_reset_progress. Alternatively, it can be achieved by running mp_coop_mark_all_maps_incomplete and mp_coop_lock_all_taunts, followed by returning to the main menu and re-inviting your partner.

Timing

The singleplayer campaign is timed as follows:

The cooperative campaign is timed as follows:

Unless otherwise specified, partial campaign runs (e.g. chapter runs) are timed as a subset of the relevant campaign, so e.g. Chapter 9 runs begin timing as soon as the player loads into Finale 1 and end timing when the player shoots the moon.

Challenge Mode
Complete individual maps from the singleplayer or coop campaign in Challenge Mode.
OOB: YesSLA: NoPause Abuse: NoDemo Requirement: 200thLeaderboardModerators: Betsruner, Bexc, Daniel, Rex, Xinera
Ranks above 200 do not require proof. sv_player_funnel_into_portals 0 is allowed. sar_pause_at may be set at 0 with any value of sar_pause_for.
Inbounds No SLA
Complete the entire singleplayer campaign.
OOB: NoSLA: NoPause Abuse: YesDemo Requirement: 200thLeaderboardModerators: Betsruner, BiSaXa, cosine, RealCreative
any% (Singleplayer)
Complete the entire singleplayer campaign.
OOB: YesSLA: YesPause Abuse: YesDemo Requirement: 200thLeaderboardModerators: Betsruner, BiSaXa, cosine, RealCreative
sar_cm_rightwarp is not allowed.
All Main Courses
Complete courses 1-5 of the cooperative campaign, without skipping any.
OOB: YesSLA: YesPause Abuse: NoDemo Requirement: 200th (Both partners submit for top 50)LeaderboardModerators: Betsruner, BiSaXa, cosine, RealCreative
All Courses
Complete all courses (1-6) of the cooperative campaign, without skipping any.
OOB: YesSLA: YesPause Abuse: NoDemo Requirement: 200thLeaderboardModerators: Betsruner, BiSaXa, cosine, RealCreative
Course 6 may be completed at any point in the run.
any% (Cooperative)
Complete up to the end of course 5 of the cooperative campaign.
OOB: YesSLA: YesPause Abuse: NoDemo Requirement: 200thLeaderboardModerators: Betsruner, BiSaXa, cosine, RealCreative
You may use glitches to skip courses and maps.
Solo Co-op
Complete courses 1-5 of the cooperative campaign, without skipping any, alone in splitscreen.
OOB: YesSLA: YesPause Abuse: NoDemo Requirement: 200thLeaderboardModerators: Betsruner, BiSaXa, cosine, RealCreative
in_forceuser may be changed, for which sv_cheats 1 is required. All other command restrictions remain unchanged.
Most Recent Community Chambers
Complete the specified amount of community maps from the Most Recent option.
OOB: NoSLA: NoPause Abuse: NoDemo Requirement: N/ALeaderboardModerators: Betsruner, BiSaXa, phunkpai
Video proof is required. You can skip levels. You cannot play your own maps or maps you have previously seen.
Co-op any% EHM
Complete up to the end of course 5 of the cooperative campaign.
OOB: YesSLA: YesPause Abuse: NoDemo Requirement: 200thLeaderboardModerators: Betsruner, BiSaXa, phunkpai
You may use glitches to skip courses and maps. EHM is allowed.
Portal Placement Never Fail
Complete the specified campaign according to the standard ruleset for the underlying category.
OOB: -SLA: -Pause Abuse: YesDemo Requirement: All runsLeaderboardModerators: Betsruner, BiSaXa, phunkpai
You may use sv_portal_placement_never_fail 1 (which requires sv_cheats 1). All other rules come from the underlying category (Inbounds No SLA, AMC, Co-op any%, or Solo Co-op).
Singleplayer 100 Portals
Complete the entire singleplayer campaign within 100 portals.
OOB: NoSLA: NoPause Abuse: YesDemo Requirement: 200thLeaderboardModerators: Betsruner, BiSaXa, phunkpai
You must place no more than 100 portals during the run. sar_lphud can be used to track portal shots.
Co-op 69 Portals
Complete all courses (1-6) of the cooperative campaign within 69 portals.
OOB: YesSLA: YesPause Abuse: NoDemo Requirement: 200thLeaderboardModerators: Betsruner, BiSaXa, phunkpai
You must place no more than 69 portals during the run. sar_lphud can be used to track portal shots.
No Major Glitches
Complete the entire singleplayer campaign.
OOB: NoSLA: NoPause Abuse: NoDemo Requirement: 5thLeaderboardModerators: Betsruner, BiSaXa, phunkpai
You must complete the game without the use of a major glitch. A list of major glitches can be found here

Portal 2 Speedrun Mod

Timing

Most categories are timed as follows:

Reverse Mod is timed as follows:

Normal Mode
Complete the game in Normal Mode.
OOB: NoSLA: NoPause Abuse: YesDemo Requirement: 200thLeaderboardModerators: Betsruner, BiSaXa, cosine, RealCreative
Celeste Mode
Complete the game in Celeste Mode.
OOB: NoSLA: NoPause Abuse: YesDemo Requirement: 10thLeaderboardModerators: Betsruner, BiSaXa, cosine, RealCreative
Fog%
Complete the game in Fog%.
OOB: NoSLA: NoPause Abuse: YesDemo Requirement: 200thLeaderboardModerators: Betsruner, BiSaXa, cosine, RealCreative
mat_ambient_light_r/g/b and mat_fullbright are banned. On top of the demo requirement, video evidence is required for all runs.
Reverse%
Complete the game in Reverse Mod.
OOB: NoSLA: NoPause Abuse: YesDemo Requirement: 200thLeaderboardModerators: Betsruner, BiSaXa, cosine, RealCreative
Floor Is Lava
Complete the game in the Floor is Lava Mode
OOB: NoSLA: NoPause Abuse: YesDemo Requirement: All runsLeaderboardModerators: Betsruner, BiSaXa, cosine, RealCreative
The Ultimate Speedrun
Complete the game using extra commands to emulate CS:S styled movement
OOB: NoSLA: NoPause Abuse: YesDemo Requirement: All runsLeaderboardModerators: Betsruner, BiSaXa, phunkpai
Runs must be done with sv_cheats 1, sv_airaccelerate 1000, sar_aircontrol 2, sar_autojump 1, portalgun_fire_delay 0. Runs can also use portalgun_held_button_fire_fire_delay 0 or 0.50.

Portal Stories: Mel

General

Demos are not recorded in any Mel category, since they cause some maps to break. SAR or SourceSplit must be used for accurate timing.

Timing

Story Mode - Inbounds
Complete the whole campaign in story mode.
OOB: NoSLA: YesPause Abuse: YesDemo Requirement: N/ALeaderboardModerators: Betsruner, Nidboj132
Story Mode - OOB
Complete the whole campaign in story mode.
OOB: YesSLA: YesPause Abuse: YesDemo Requirement: N/ALeaderboardModerators: Betsruner, Nidboj132
Advanced Mode - Inbounds
Complete the whole campaign in advanced mode.
OOB: NoSLA: YesPause Abuse: YesDemo Requirement: N/ALeaderboardModerators: Betsruner, Nidboj132
Advanced Mode - OOB
Complete the whole campaign in advanced mode.
OOB: YesSLA: YesPause Abuse: YesDemo Requirement: N/ALeaderboardModerators: Betsruner, Nidboj132
Challenge Mode
Complete individual maps from the singleplayer or coop campaign in Challenge Mode.
OOB: YesSLA: NoPause Abuse: NoDemo Requirement: 200thLeaderboardModerators: Betsruner, Bexc, Daniel, Rex, Xinera
sar_pause_at may be set at 0 with any value of sar_pause_for.

Portal Reloaded

General

All Portal Reloaded categories ban the developer 1 command due to an unnatural advantage it provides on some maps.

Timing

No SLA
Complete the entire campaign with either ending.
OOB: NoSLA: NoPause Abuse: YesDemo Requirement: 25thLeaderboardModerators: Betsruner, BiSaXa, cosine
developer 1 is banned.
SLA
Complete the entire campaign with either ending.
OOB: YesSLA: YesPause Abuse: YesDemo Requirement: 25thLeaderboardModerators: Betsruner, BiSaXa, cosine
developer 1 is banned.
Coop
Complete the entire coop campaign.
OOB: YesSLA: YesPause Abuse: NoDemo Requirement: All runsLeaderboardModerators: Betsruner, BiSaXa, cosine
developer 1 is banned.

Aperture Tag

Timing

Inbounds No SLA
Complete the entire campaign.
OOB: NoSLA: NoPause Abuse: YesDemo Requirement: 10thLeaderboardModerators: Betsruner, Fridge
Speedrun Mod
Complete the entire campaign using the speedrun mod maps."
OOB: NoSLA: NoPause Abuse: YesDemo Requirement: All runsLeaderboardModerators: Betsruner, Fridge
This category adopts the Inbounds No SLA ruleset

Portal Revolution

General

Portal Revolution does not support SAR. Video recording is the main method for submitting runs. Demos can be recorded with demo_autorecord 1 and record demoname at the start of the run and stop at the end of the run, however they are not necessary.

Timing

Inbounds SLA - No CFG
Complete the entire campaign.
OOB: NoSLA: YesPause Abuse: YesDemo Requirement: NoLeaderboardModerators: Betsruner, cosine, RealCreative
Crouch Fly Glitch is not allowed.
Inbounds SLA - CFG
Complete the entire campaign.
OOB: NoSLA: YesPause Abuse: YesDemo Requirement: NoLeaderboardModerators: Betsruner, cosine, RealCreative
Any%
Complete the entire campaign
OOB: YesSLA: YesPause Abuse: YesDemo Requirement: NoLeaderboardModerators: Betsruner, cosine, RealCreative

Sourcemods

Timing

General Rules

Developer 1 cannot be used to make the player move early.

Whichever categories are present will adopt their respective rulesets from the basegame categories.

Aperture Ireland - Any%
Complete the single player campaign
OOB: YesSLA: YesPause Abuse: YesDemo Requirement: All runsLeaderboardModerators: Fridge, Dreadnox
Run ends on the final cutscene starting
Aperture Ireland - Inbounds SLA
Complete the single player campaign
OOB: NoSLA: YesPause Abuse: YesDemo Requirement: All runsLeaderboardModerators: Fridge, Dreadnox
Run ends on the final cutscene starting
Designed For Danger - Inbounds No SLA
Complete the single player campaign
OOB: NoSLA: NoPause Abuse: YesDemo Requirement: All runsLeaderboardModerators: Fridge, Betsruner, Infrabread, Msushi
Run ends on the final cutscene starting
Designed For Danger - Any%
Complete the single player campaign
OOB: YesSLA: YesPause Abuse: YesDemo Requirement: All runsLeaderboardModerators: Fridge, Betsruner, Infrabread, Msushi
Run ends on the final cutscene starting
Welcome Back - Inbounds No SLA
Complete the single player campaign
OOB: NoSLA: NoPause Abuse: YesDemo Requirement: All runsLeaderboardModerators: Betsruner, Fridge, Dreadnox
Runs ends on the fadeout of the final level
Memories - Any%
Complete the single player campaign
OOB: YesSLA: YesPause Abuse: YesDemo Requirement: All runsLeaderboardModerators: limga, Minecraft, Spidda
Runs ends on the fadeout of the final level
Memories - 100%
Complete the single player campaign while collecting all secrets
OOB: YesSLA: YesPause Abuse: YesDemo Requirement: All runsLeaderboardModerators: limga, Minecraft, Spidda
Runs ends on the fadeout of the final level
Dilapidation - Beat the Game
Complete the single player campaign
OOB: YesSLA: YesPause Abuse: YesDemo Requirement: All runsLeaderboardModerators: Betsruner, NeKz, Zypeh
Runs ends on the fadeout of the final level
Dilapidation - Inbounds No SLA
Complete the single player campaign
OOB: NoSLA: NoPause Abuse: YesDemo Requirement: All runsLeaderboardModerators: Betsruner, NeKz, Zypeh
Runs ends on the fadeout of the final level
Thinking With Time Machine - Inbounds SLA
Complete the single player campaign
OOB: NoSLA: YesPause Abuse: YesDemo Requirement: All runsLeaderboardModerators: Betsruner, PerOculos, TheSwagatron, Znernicus, BiiWiX, Mikael_, Fridge, Zypeh
Run ends on the final cutscene starting
Thinking With Time Machine - Any%
Complete the single player campaign
OOB: YesSLA: YesPause Abuse: YesDemo Requirement: All runsLeaderboardModerators: Betsruner, PerOculos, TheSwagatron, Znernicus, BiiWiX, Mikael_, Fridge, Zypeh
Run ends on the final cutscene starting
P1 Done P2 - Inbounds No SLA
Complete the single player campaign
OOB: NoSLA: NoPause Abuse: YesDemo Requirement: All runsLeaderboardModerators: Betsruner, PerOculos, PistonMiner, Znernicus, Jaio, PsYcHo962, Fridge
Timing ends on the last core being destroyed.
P1 Done P2 - Any%
Complete the single player campaign
OOB: YesSLA: YesPause Abuse: YesDemo Requirement: All runsLeaderboardModerators: Betsruner, PerOculos, PistonMiner, Znernicus, Jaio, PsYcHo962, Fridge
Timing ends on the last core being destroyed.
Portal: After Hours - Inbounds No SLA
Complete the single player campaign
OOB: NoSLA: NoPause Abuse: YesDemo Requirement: All runsLeaderboardModerators: Betsruner, Fridge
Timing ends on the final cutscene starting
Mind Escape - Inbounds SLA
Complete the single player campaign
OOB: NoSLA: YesPause Abuse: YesDemo Requirement: All runsLeaderboardModerators: Betsruner, Infrabread, KiloOnline, Fridge
Timing ends on interacting the door to the van, starting the final cutscene.
Mind Escape - Any%
Complete the single player campaign
OOB: YesSLA: YesPause Abuse: YesDemo Requirement: All runsLeaderboardModerators: Betsruner, Infrabread, KiloOnline, Fridge
Timing ends on interacting the door to the van, starting the final cutscene.
Portal: Unity Reboot - Inbounds No SLA
Complete the single player campaign
OOB: NoSLA: NoPause Abuse: YesDemo Requirement: All runsLeaderboardModerators: Infrabread, Msushi, Fridge
Timing ends on the fadeout of the final level
Portal: Unity Reboot - Any%
Complete the single player campaign
OOB: YesSLA: YesPause Abuse: YesDemo Requirement: All runsLeaderboardModerators: Infrabread, Msushi, Fridge
Timing ends on the fadeout of the final level