If you appreciate the work done within the wiki, please consider supporting The Cutting Room Floor on Patreon. Thanks for all your support!
This article has a talk page!

Proto:Half-Life 2: Episode Two/Source Particle Benchmark

From The Cutting Room Floor
Jump to navigation Jump to search

This is a sub-page of Proto:Half-Life 2: Episode Two.

Source Particle Benchmark
This cactus is UNDER CONSTRUCTION
This article is a work in progress.
...Well, all the articles here are, in a way. But this one moreso, and the article may contain incomplete information and editor's notes.
Hmmm...
To do:
  • There are PDB files for the game code (client/server DLLs) for both the episodic and hl2 binaries.
  • npc_hunter and npc_ministrider (prototype version of the Hunter). It should also be compared to npc_ministrider from the Source 2006 version of Episode One.
  • Undocumented test entities that aren't found in any other version of the engine as far as I know, such as tectonic

The Source Particle Benchmark demo, also known as the Multicore CPU Particle Simulation Benchmark, is a late 2006 benchmarking tool used to showcase the benefits of multi-threading in the Source Engine at Valve Hardware Day 2006[1]. It was also given to a few third-parties for independant benchmarks[2][3][4] and was later shared publicly by one of them. A hacker later rereleased this build to scare Steam users by pretending to have compromised Valve's servers.

The tool's code turns out to be an in-development version of Half-Life 2: Episode Two and of the Source 2007 engine, sporting features of the game and the engine in more or less finished states. It is also unique in that it runs without Steam.

Widescreen crash issue

When changing the game's aspect ratio from 4:3 to a widescreen one (16:9, 16:10), the background texture will be replaced by a missing texture. Trying to boot the game directly in a widescreen resolution will result in an instant crash.

This happens because there is no widescreen background texture available. The Riverbed screenshot only exists for 4:3 resolutions, and there are no fallback textures from Half-Life 2 or Episode One for the game to use instead.

Download.png Download Widescreen Crash Fix
File: Source-Particle-Benchmark-Widescreen-Fix.zip (79 Kio) (info)


Missing sounds

The benchmarking map actually tries to play sounds, but it is unable to do so since the build comes without any game sound.

The sounds are managed by two ambient_generic entities.

Thunder

Thunder sounds from Episode One are manually played by a timer. They can be restored by copying the appropriate sound files from that game.

Sound name Files
citadel_ep01.flash_thunder
ambient/atmosphere/thunder1.wav
ambient/atmosphere/thunder2.wav
ambient/atmosphere/thunder3.wav
ambient/atmosphere/thunder4.wav

Rain

The unused rain loop sound is supposed to play forever once the map is loaded. This sound is not present anywhere, even in the final game, and thus cannot be faithfully restored.

Sound name File
ep2_outland.rain_loop1 ambient/levels/forest/rain_loop1.wav


In-game differences

Main Menu

Normally, the game directly loads the benchmarking map when launched. By editing the batch file that starts the game, it is possible to get to the main menu instead. The menu tries to load the map ep2_background01 but it doesn't exist, so nothing happens.

The background texture is a blurred screenshot from a location named Riverbed. This was confirmed by leaks of various Half-Life 2-related map source files on March 24, 2017[5]. Riverbed was the initial location for the train crash at the beginning of Episode Two.

Proto Final
Main Menu HL2EP2-SPB-Main-Menu.png HL2EP2-Main-Menu-Letterbox.png
Texture HL2EP2-SPB-background.png HL2EP2-menu-background01-texture.png


Texture Screenshot
HL2EP2-SPB-background.png HL2EP2-SPB-styleguide riverbed.png

Friends Network and Steam Parlor Games

The old Friends panel

From 2004 to 2009, Source Engine games had a "Friends" feature to check your Friends List in-game. It was replaced by the Steam Overlay and the old Friends servers have been shut down around the same time.

Since this prototype was built without Steam support, the Friends feature always says that "Steam needs to be running for Friends to be available.", even if Steam is running.

Also, builds of the 2004 Steam Parlor Games can be found in platform\AddOns. The assets are the same as the one found in the retail version of Half-Life 2.

Player nickname

When the game starts, the player is given the name ErikJ. The name is specified in the configuration file (config.cfg).

Erik Johnson is one of Valve's business development authorities[6].

Flashlight

Careful, you'll lose an eye.
This page or section needs more images.
There's a whole lotta words here, but not enough pictures. Please fix this.
Hmmm...
To do:
  • Add a normal comparison of the flashlights (without glitches).
  • Get Source 2007 comparison with the Shadow Detail setting set to High. The retail game is denying me this setting because Source 2007/2009 doesn't handle Optimus properly and doesn't support -force_vendor_id and -force_device_id to override it. The r_flashlightdepthtexture cvar reverts back to 0 immediately when toggled.
    • By retail game, I mean a pre-Steampipe build (before the game was brought to the Source 2013 engine).
    • I don't know if Source 2007 and 2009 are different regarding the flashlight.
  • Confirm: Is it actually working correctly on Source 2007?

The prototype features an unfinished version of the final game's flashlight with shadow mapping capabilities.

For some reason, the flashlight can be turned on even if the player doesn't have the HEV suit equipped.

Also, special shaders like EyeRefract made specifically to handle the new flashlight effect don't exist yet, so rendering issues happen when shining the light on another character.

Episode One
(Source 2006)
Source Particle Benchmark
HL2EP2-SPB-Source2006flashlight.png HL2EP2-SPB-SPBflashlight-unfinished.png


Flashlight icon

In Half-Life 2 and Episode One, the flashlight uses the suit's power, sharing it with sprinting and oxygen. By late 2006 however, Valve had already implemented the flashlight's own power source. It uses the Half-Life: Source icon as a placeholder.

Proto Final
HL2EP2-SPB-flashlight-icon.png HL2EP2-flashlight-icon.png

Entities

npc_magnusson

npc_magnusson, the entity for Dr. Magnusson, already exists in the code but his model is missing.

npc_surface

npc_surface is a test entity made of many blobs that can merge together into bigger shapes. An explosion can scatter the blobs around, after which they will merge back together. Each blob deals 5 damage when touched.

This entity functions using a technology known as Blobulator. Blobulator was eventually used for Portal 2's Mobility Gels[7].

npc_blob

npc_blob is a test entity designed to showcase the Source Engine's ability to render entities moving in packs and formation.

It uses the Snark model from Half-Life: Source. It is showcased in a map called demo_blob that wasn't present in the Benchmark by default but was part of the Repo VMF map sources that leaked in 2016. In the map, a flock of npc_blob will walk over map objects, entities, and even take on specific shapes, such as the Half-Life logo.

Files

Missing T-Minus One Chapter

The chapter setup between the prototype and the final game is the same, except for the final T-Minus One chapter which is missing.

There is also no recap video. The command required to play it doesn't exist in the code.

Proto Final
chapter1.cfg map ep2_outland_01 playvideo_exitcommand ep1_recap map ep2_outland_01
chapter2.cfg map ep2_outland_02 map ep2_outland_02
chapter3.cfg map ep2_outland_05 map ep2_outland_05
chapter4.cfg map ep2_outland_06a map ep2_outland_06a
chapter5.cfg map ep2_outland_09 map ep2_outland_09
chapter6.cfg map ep2_outland_11 map ep2_outland_11
chapter7.cfg N / A map ep2_outland_12a

Scenes

Hmmm...
To do:
Check for differences between Dr. Magnusson's prototype VCD files and the final's.

All scenes (VCD files) from Half-Life 2 and Episode One are present in hl2\scenes and episodic\scenes respectively.

The scenes for Episode Two were removed, leaving only the directory structure.

However, a few scenes did survive, most are for Dr. Magnusson, while a single one is for Griggs.

ep2\Scenes\outland_02\griggs_betweenwave_01.vcd
ep2\scenes\outland_11\mag_aband_critical.vcd
ep2\scenes\silo garage\mag_getgoing.vcd
ep2\scenes\silo garage\mag_littletotell.vcd
ep2\scenes\silo garage\mag_nothingelse.vcd
ep2\scenes\silo garage\mag_onelastthing.vcd
ep2\scenes\silo garage\mag_thatsit.vcd
ep2\scenes\silo garage\striderbuster.vcd

Early NPC soundscripts

Soundscripts are files that identify sounds in the game. This allows developers and level designers to add sounds to their maps; the sound's properties such as the sound file to use, the volume, the pitch, etc. are controlled by the soundscript.

These files show that some parts of the final game were already planned, in the making or even done by late 2006.

File Use
npc_sounds_attackheli_episodic2.txt The Hunter-Chopper in the Riding Shotgun chapter
npc_sounds_fastzombie_episodic2.txt The Fast Zombie getting on the Muscle Car
npc_sounds_strider_episodic2.txt The battle of the Our Mutual Fiend chapter
npc_sounds_turret_episodic2.txt Under the Radar chapter?

Early soundscapes

Soundscapes are sets of looping and random sounds that build the audible environmental ambience of the game.

The prototype contains two early soundscape text files, which are essentially the ones from the final missing a lot of entries.

scripts\soundscapes_outland.txt
scripts\soundscapes_silo.txt

Rain

In the level_sounds_outland_episodic.txt soundscript, an ambience entry exists for a rain loop, suggesting a rainy level at some point. Considering that the Riverbed style guide maps have rain, this was very likely.

"ep2_outland.rain_loop1"
{
	"channel"		"CHAN_STATIC"
	"volume"		"1.0"
	"pitch"			"100,110"
	"soundlevel"	"SNDLVL_120dB"
	rndwave
	{
		"wave"			"ambient/levels/forest/rain_loop1.wav"
	}
}

weapon_proto1

In the ep2\scripts directory lies a weapon script for a prototype weapon simply named weapon_proto1. However, the weapon itself doesn't exist in the code so it cannot be spawned.

The weapon script itself only shows that it had unlimited ammunition and its own ammunition type. Otherwise, it uses the .357 models and sounds as placeholders.

The code for this weapon leaked alongside the 2008 Source Engine code leak from 2012. It reveals that:

  • the weapon was being used for testing things for Episode Three,
  • the primary fire caused a hitscan bolt to be fired; that bolt could penetrate an NPC or the world once, allowing the player to hit an entity through a wall or two enemies at once,
  • the secondary fire would cause the weapon to detect NPCs in a specific radius around the player and play a sound as well as show a visual effect.

Source Filmmaker sessions

Two Source Filmmaker sessions from Episode One are present in the files. Both of these were used in Episode One's trailer.

episodic\elements\sessions\alyxdemo01_grenadeflinch01.dmx
episodic\elements\sessions\alyxdemo02_antlionfight01.dmx

alyxdemo02_antlionfight01.dmx in SFM.

Voice lines soundscript

Hmmm...
To do:
The list of cut content below actually exists in the final game's level_voices_episode_02.txt as well, so maybe it could be moved there instead?

The prototype ships with an early version of the ep2\scripts\level_voices_episode_02.txt, which is a soundscript for the voice lines.

The biggest difference is that many voice lines are missing in the prototype. Some of them had their volume or file path changed.

However, there are a few interesting cut elements:

  • Lines regarding Alyx's fall in the original beginning of Episode Two (presumably Riverbed) are present.
  • Two characters named Cyril and Fred were to appear on the bridge near the Muscle Car is acquired in the map outland_06, according to the file paths.
    • They would supposedly have talked to each other as well as Gordon and Alyx.
    • Their names are references to science-fiction writers Cyril M. Kornbluth and Frederik Pohl[8].
  • The G-Man's monologue during Alyx's healing was much longer.

Broken Half-Life 2 binaries

The hl2\bin folder contains a set of client and server DLLs for the base Half-Life 2 code (without the Episode One and Episode Two additions), as well as their PDB files. It is possible to reach the menu, but the game crashes when attempting to load a map. The issue is caused by an error when loading models.

Windows Registry

The Source Particle Benchmark can be run without Steam, but it will still read and write Steam settings in the Windows Registry.

Source Engine games store their graphics settings in the Registry. They also update some Steam values.

The game uses Steam's language setting to determine its text language (HKEY_CURRENT_USER\Software\Valve\Steam:Language).

[HKEY_CURRENT_USER\Software\Valve\Source\ep2\Settings]
"AutoConfigVersion"=dword:00000001
"ScreenWidth"=dword:00000400
"ScreenHeight"=dword:00000300
"ScreenWindowed"=dword:00000000
"ScreenMSAA"=dword:00000002
"ScreenMonitorGamma"="2.2"
"mat_forceaniso"=dword:00000004
"mat_picmip"=dword:00000001
"mat_trilinear"=dword:00000001
"mat_vsync"=dword:00000000
"mat_forcehardwaresync"=dword:00000001
"mat_parallaxmap"=dword:00000000
"mat_reducefillrate"=dword:00000000
"r_shadowrendertotexture"=dword:00000001
"r_flashlightdepthtexture"=dword:00000001
"r_rootlod"=dword:00000001
"r_waterforceexpensive"=dword:00000001
"r_waterforcereflectentities"=dword:00000001
"mat_antialias"=dword:00000002
"mat_specular"=dword:00000001
"mat_bumpmap"=dword:00000001
"mat_hdr_level"=dword:00000002
"mat_colorcorrection"=dword:00000001
"VendorID"=dword:00000000
"DeviceID"=dword:00000000
"DXLevel_V1"=dword:0000005a
"User Token 2"=""
"User Token 3"=""
"key"="1234567890123"

[HKEY_CURRENT_USER\Software\Valve\Source\Settings]
"User Token 2"=""
"User Token 3"=""

[HKEY_CURRENT_USER\Software\Valve\Steam]
"Language"=""
"Skin"=""
"PseudoUUID"="4e9e5f47d37ed844"
"Rate"="10000"
"LastGameNameUsed"="ErikJ"

Build Date

The version command dumps the engine's build date to the console (engine.dll):

Exe build: 17:37:52 Oct 31 2006 (2915)

It was built on Halloween 2006, theoretically making it the spookiest of Valve's games.

References