Beat the game without scripts, macros or cheats. This has to be done in one sitting, quicksaves and quickloads are allowed.
No setup can be peformed prior to the start of the run. This includes obtaining persistent glitched states such as Item Save Glitch (ISG).
After reaching a given chapter, the 'New Game' menu can be used to reload from that chapter. If this is to be performed, the command sv_unlockedchapters 0 must be executed before the run is started.
Speedruns can be performed on three builds of the game:
- The current Steam Version
- Build 5135 (Source Unpack)
- Build 3420
Runs performed on other versions can be verified with video proof, but demo proof is unable to be accepted.
Timing starts on the tick the crosshair appears and ends when Glados explodes.
Livesplit, with the Sourcesplit auto-splitter, can be used to time runs as they are performed. For runs that are paused while the timer is running, livesplit is the only valid timing method.
Demo files of a run can be timed using any valid demo parser. Officially, UntitledParser and Startdemos+ are used for timing runs with demos. Time spent paused cannot be timed via demos, so any run that pauses must be timed using livesplit.
In Portal, there are two forms of proof that are used. You are required to supply at least one and potentially both, depending on how fast your run is. Exact requirements are at the end of the section.
Video proof is a recording of the run, made during the run. For video proof to suffice, it must:
- Include game audio
- Show livesplit (if load-removed time is to be used)
- Be of sufficient quality
If livesplit is not shown and demo proof is not provided, runs can only be verified with RTA timing.
Demos are replay files that can be recorded from within the game. They can be recorded using the demo recorder plugin, which is included with Source Unpack. Demos can be uploaded to any trustworthy, permanent, and publicly accessible file sharing service, and linked in the description of the run. Google Drive is a common choice.
When submitting with demos, ensure you run speedrun_stop before uploading your run. Failure to do so will result in a corrupt demo, and the rejection of your run.
What evidence is required depends on the rank your run would be if it were to be verified.
- MUST include a live recording with game audio AND demo files
- MUST include demo files
- OPTIONALLY can include a live recording with or without game audio and visible livesplit
- MUST include at least one of the following:
- Demo files
- A live recording with game audio
- Livesplit must be shown if submitting with Load-Removed Time
The vault save available in the resources tab can be used to skip the vault cutscene and start with 53.025 seconds on the timer.
Runs that use the vault save must be submitted with either demo proof or video proof including livesplit. The video must start before the save is loaded. Submitting with a video that starts after 53.025 on the timer will lead to a rejection.
Any command in this list can be executed during or before runs either via the console or by binding it to a key.
- Any bind accessible from the keyboard menu (i.e. movement binds)
toggle_duck- The default duck bind on controllersv_player_funnel_into portals 0|1- Portal funneling bindscl_showpos 0|1- Displays position in top rightnet_graph 0|1- Displays system information, including fpscl_showfps 0|1- Displays fpsr_drawviewmodel 0|1- Hides/shows portalgungl_clear 0|1- Blacks out nodraw surfaces, recommended for photosensitive runnerssv_autosave 0|1- Disables/enables autosaves. Can reduce stutters.sensitivity [sensitivity]- Changes mouse sensitivitysave [savename]andload [savename]for any save namesave [savename]; load [savename]- Saving and loading in a single keypressfps_max [fps]- Sets maximum FPS. Can be combined with the saveload bindviewmodel_fov [fov]- Changes the size of the viewmodelsay "words"- Prints text to screen (Can be combined with any other binds)echo [text]- Echoes text to the consolemat_dxlevel 80|90- Changes DirectX level.
The demo recorder can be used to record demos for your run. Allowed commands:
speedrun_start- Starts the run by loading the set save, or the set mapspeedrun_stop- Finishes the recording. Always execute after timing endsspeedrun_map [mapname]- Change which map will be loadedspeedrun_save [savename]- Change which save will be loaded. Set to""to load a map insteadspeedrun_dir [directory]- Set a directory for demos to be recorded to
SST can be used for a few quality of life features:
fov_desired- Can be set to any value between 75 and 120 on any build of the gamesst_portal_colourN- Can be used to change the crosshair colours to whatever you wantengine_nofocus_sleep 0- Can be used to remove the slowdown when alt-tabbingsst_mouse_factor 1-20- Can be used to scale DPI. Can be used in combination with sensitivity changes
Of these, ONLY sst_mouse_factor and fov_desired can be changed during runs.
Other functions, especially sst_autojump, are NOT allowed for use in runs.
The input hud plugin can be used to show an in-game input display. All commands available in the plugin can be used.
Note: The input hud plugin must be loaded while disconnected. Run disconnect prior to loading it to avoid a game crash.
No wall or floor texture changes are allowed. Changing other textures and sounds is allowed, so long as it provides no advantage. This includes adjusting the volume of sounds.