Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Tesla Effect: A Tex Murphy Adventure — PC/Windows, 2014

A byte-level study of a 17,519,466,565-byte Steam installation in which 82.93 % of the bytes are filmed video, the studio's own code is 0.0090 % of the object, and the entire script travels in five Excel workbooks with the names of the people who last saved them still inside.

Nothing here is emulation, patching or preservation advocacy. It is measurement: every number carries the command that reproduces it, the fifty-six predictions were written before a single file was opened and are scored whether they won or lost, and the formats are described in the docstrings of the tools that read them.

The object is not in this repository and was never copied into it. It is a live Steam installation on a drive this repository does not own; nothing in this session wrote to that drive. Two fields of the Steam manifest belong to the person who owns the installation — LauncherPath and LastOwner, their SteamID64 — and are redacted everywhere in this repository. The installation's output_log.txt is neither copied nor quoted, and it turned out to be unnecessary: the object states its own engine version forty-eight times.

It is also the first object in this collection measured at a scale that cannot be censused by hand, and that changes what a sentence is allowed to say. Where a figure covers every member it says so; where it covers a sample it names the sample and its size on the same line. The one place that discipline was not applied — a running-time estimated from five videos out of 1,035 — is the session's largest miss, by 50 %.


The short card

title Tesla Effect: A Tex Murphy Adventure — the sixth and last Tex Murphy, funded on Kickstarter in 2012
platform PC/Windows, PE32 i386, 32-bit. Unity 4.3.3f1, build hash c8ca9b6b9936 — stated by the object 48 times, in the executable's version resource and at offset 20 of all 47 serialized files
year 2014, and the object dates itself three ways: the script workbooks were created 2013-11-20 and last saved 2014-05-09, and the studio's own code was compiled 2014-06-11T21:55:36Z. The filesystem dates nothing — Steam rewrote all 4,769 mtimes into one 6-minute window
the object 4,769 files, 99 directories, 17,519,466,565 bytes — agreed to the byte by du -sb, by the sum of 4,769 stat calls, and by the distributor's SizeOnDisk
the studio BigFinishGames — in mainData as Unity's companyName, and in Assembly-CSharp.dll as part of /Documents/BigFinishGames/TeslaEffect/. The only place in 17.5 GB where the studio names itself in text is the path your saved games go to. The credits are video and this document does not read video
the executable 11,288,064 bytes, and it is not the game. Its version resource carries no company, no product and no copyright — only Unity Version 4.3.3f1_c8ca9b6b9936. It is Unity's stock player, renamed, built five months before the game's code
the build machines 101 distinct drive-lettered paths in that executable, from five vendors — FMOD (53), NVIDIA PhysX (17), Intel's maths runtime (10), Unity (11), RakNet (9) — and not one belonging to the studio. In 1992 the equivalent object had zero paths of any kind
the only maker named in a binary RAD Game Tools, in bink2w32.dll. Assembly-CSharp.dll has every version field present and every one empty
the video 1,035 Bink 2 files, 14,480,392,036 bytes, 82.65 % of the object. All 1,035 headers parse; all 1,035 declared lengths match stat; all 1,035 are 2048 × 1024; 1,028 run at 23.976 fps; all 1,035 declare exactly one audio track
the running time 20,014.286 seconds — 5 h 33 m 34.3 s — summed from 1,035 exact frame counts, with zero frames decoded
duplicated 4,570 distinct SHA-1s for 4,769 files. 1,330,831,607 bytes — 7.596 % — is content that already exists elsewhere, and 99.994 % of it is video: the story graph is stored as a directory tree, so a scene reachable from six branches is written six times
the script five Excel 2003 XML workbooks, 9,641,178 bytes, still carrying 299,321 characters of cell styling the game cannot use. Author James; LastAuthor masonj on English and Spanish, courtneyj on the other three; all five created in the same second; English and Spanish saved in the same second; and somebody printed the English script on 2014-04-24 at 20:59:23 UTC
the closure test the 1992 object's name table closed exactly, 56 names for 63 files. This one fails in both directions: 294 of 3,262 requested string IDs have no English text, and at least 3,250 of 6,535 English keys are named by nothing this document can see
why it fails there is no mechanism. The join is GetSubtitleDataFilePath, a function that concatenates a directory, a file stem and an extension. Nothing in the build checked; tools/closure.py does it in about a second
the case trap 1,150 files are spelt .XML and 175 .xml, in the same directories, and the code's literal is lower-case. 16 subtitles per language differ from their keys only by _PIECE_ versus _Piece_
what shipped by accident a ??? in a retail line of dialogue, patched four different ways by five translators — Italian invented a name; a writer's note reading "XXX (Deep, lonely, noir-esque voice-over goes here. Once we finish writing it of course.) XXX", translated into German and French; an instruction to the translator in the German key column; seventeen files named - Copy, six of which are older versions; four files that are not well-formed XML; and a path into the studio's own source tree, signed steve w
the game's own code Assembly-CSharp.dll, 1,562,624 bytes, 883 TypeDef rows and 6,617 methods, read with a 364-line metadata reader and no decompiler. 59 of its 882 types came from somewhere else — Unity's Stealth tutorial (23), a commercial FPS kit (22), the Bink binding (11), iTween (3)
where the text is not of 5,002 string literals in that assembly, 65 are a line from the script and 319 are keys. The code contains almost no text; it contains the names of text
leftovers 0.267 % of the object without the duplicated video, 7.863 % with it — and both are floors, because 48,821,155 bytes of duplication were found in the one place inside the asset containers that was checked. The largest single non-video leftover is browscap.ini, a 311,984-byte table of web-browser user agents, in a detective game
where this stops 16.86 % of the object — 2,954,047,069 bytes of Unity serialized data — was not opened, and 13 says exactly what opening it would take. Two chapters are explicitly incomplete because of it
predictions 56 clauses plus 2 named inferences, written before a file was opened: 42 hit, 9 half, 6 miss, 1 unresolved = 81.6 %

Everything above is derived in the chapters and every figure has a command.


The chapters

00 — the predictions fifty-six bets placed before a single file was opened, and the two inferences six of them hang on
01 — the object what the software is, how it was measured, and the byte budget that closes
02 — the spec sheet every figure with the command that reproduces it, and an Engine section
03 — the volume descriptor the branch's oldest question, asked three times, answered three ways, closed by none of them
04 — the clocks an object whose filesystem forgot when it was made, and the four kinds of clock that survived
05 — the video 20,014.286 seconds from 1,035 headers, and a sample of five that predicted the population at twice its rate
06 — the same film six times 1,330,831,607 redundant bytes, a story graph stored as directories, and four GUIDs that catch a file-manager copy
07 — the text at two levels the closure test, run both ways, failing both ways, and the direction that cannot be finished here
08 — five spreadsheets the script, who saved it, and the day somebody printed it
09 — the translators five people, one hole in the English, and four different patches
10 — the executable that is not the game five build machines, none of them the studio's, and a name found in a save path
11 — the assembly 883 types, how many the studio wrote, and 5,002 literals of which 65 are readable
12 — the bridge what the code says out loud, and 48 MB of duplication a hash census cannot see
13 — Unity, and where I stop the 16.86 % this document does not open, and what opening it would take
14 — the case problem .XML against .xml, four malformed files, and seventeen called - Copy
15 — the leftovers what should not be here, in bytes, against two denominators
16 — against 1992 the same four operations on an object 44,600 times smaller, and why the Saga cell stays empty
17 — the tools eleven written, two carried, and four inherited tools run unmodified first
18 — open questions eight, including one waiting since the thirteenth session
19 — corrections eight of mine and six of the briefing's, each with the command that separates them
20 — prediction scoring fifty-eight rows, counted by a tool from the table's own rows

The tools

Thirteen files, 1,693 lines of Python, no dependency outside the standard library. Every one takes the installation directory as an argument; no absolute path to the object appears in any default.

python tools/instcensus.py <install_dir> notes/sha1-all.txt --sha1
python tools/dupes.py      notes/sha1-all.txt
python tools/bk2.py        <install_dir> notes/bk2.txt
python tools/sheet.py      <install_dir>/TeslaEffect_Data/ExternalData/Localization/Strings
python tools/closure.py    <install_dir>/TeslaEffect_Data/ExternalData/Data _work/keys
python tools/bridge.py     <install_dir>/TeslaEffect_Data/ExternalData
python tools/pe.py         <install_dir>/TeslaEffect.exe
python tools/clrmeta.py    <install_dir>/TeslaEffect_Data/Managed/Assembly-CSharp.dll
python tools/paths.py      <install_dir>/TeslaEffect.exe
python tools/unity.py      <install_dir>/TeslaEffect_Data
python tools/leftovers.py  notes/sha1-all.txt
python tools/toolclass.py  tools
python tools/checkscore.py docs/20-prediction-scoring.md

notes/ holds their output, including sha1-all.txt: 4,769 files hashed in one background pass, 0 failures.

The question this object asks

An adventure in which 98 % of the bytes are somebody else's engine or filmed actors, the studio's own code is nine ten-thousandths of the object, and the script travels in five Excel files carrying the names of the people who saved them and the date somebody printed it.

What, of this object, is still "the game" — and who would be able to say so, if it were not for the metadata nobody meant to ship?


Part of a per-platform index at pc-gamelist-doc.

About

Byte-level study of Tesla Effect (PC/Windows, 2014): 17,519,466,565 bytes in which 82.93 % is filmed video and the studio's own code is 0.0090 %. 1,035 Bink 2 headers censused, 20,014.286 s of running time, a script in five Excel workbooks, and a name-closure test that fails both ways.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages