Skip to content

Instantly share code, notes, and snippets.

@William-Carter
Last active August 14, 2024 16:59
Show Gist options
  • Select an option

  • Save William-Carter/6b26c8fee8a836f9d586977065c86c9e to your computer and use it in GitHub Desktop.

Select an option

Save William-Carter/6b26c8fee8a836f9d586977065c86c9e to your computer and use it in GitHub Desktop.

General Rules

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.

Game Version

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

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.

Proof Requirements

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

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.

Demo Proof

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.

Runs that would rank:

1st - 25th:

  • MUST include a live recording with game audio AND demo files

26th - 100th:

  • MUST include demo files
  • OPTIONALLY can include a live recording with or without game audio and visible livesplit

101st and above:

  • 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

For runs that pause while the timer is running, video proof is always required.

Vault Save

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.

Allowed Commands

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 controller
  • sv_player_funnel_into portals 0|1 - Portal funneling binds
  • cl_showpos 0|1 - Displays position in top right
  • net_graph 0|1 - Displays system information, including fps
  • cl_showfps 0|1 - Displays fps
  • r_drawviewmodel 0|1 - Hides/shows portalgun
  • gl_clear 0|1 - Blacks out nodraw surfaces, recommended for photosensitive runners
  • sv_autosave 0|1 - Disables/enables autosaves. Can reduce stutters.
  • sensitivity [sensitivity] - Changes mouse sensitivity
  • save [savename] and load [savename] for any save name
  • save [savename]; load [savename] - Saving and loading in a single keypress
  • fps_max [fps] - Sets maximum FPS. Can be combined with the saveload bind
  • viewmodel_fov [fov] - Changes the size of the viewmodel
  • say "words" - Prints text to screen (Can be combined with any other binds)
  • echo [text] - Echoes text to the console
  • mat_dxlevel 80|90 - Changes DirectX level.

Allowed Plugins

Demo Recorder Plugin

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 map
  • speedrun_stop - Finishes the recording. Always execute after timing ends
  • speedrun_map [mapname] - Change which map will be loaded
  • speedrun_save [savename] - Change which save will be loaded. Set to "" to load a map instead
  • speedrun_dir [directory] - Set a directory for demos to be recorded to

Source Speedrun Tools

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 game
  • sst_portal_colourN - Can be used to change the crosshair colours to whatever you want
  • engine_nofocus_sleep 0 - Can be used to remove the slowdown when alt-tabbing
  • sst_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.

Input Hud

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.

Asset Modification

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment