{"id":1430,"date":"2007-11-22T08:11:33","date_gmt":"2007-11-22T13:11:33","guid":{"rendered":"http:\/\/www.shamusyoung.com\/twentysidedtale\/?p=1430"},"modified":"2008-09-19T20:53:26","modified_gmt":"2008-09-20T01:53:26","slug":"episode-2-fixed","status":"publish","type":"post","link":"https:\/\/www.shamusyoung.com\/twentysidedtale\/?p=1430","title":{"rendered":"Episode 2 Fixed"},"content":{"rendered":"<p>As a follow-up to <a href=\"?p=1427\">yesterday&#8217;s ranting<\/a> about Steam breaking my game:  They fixed it last night.  Whew.  I was going to be quite angry if I had to go through my day off without access to my game.  Sigh.  I&#8217;ll probably never get used to the Jeckyl &#038; Hyde face of Valve.<\/p>\n<p>How the bug happened is somewhat interesting.  They didn&#8217;t actually make any Episode 2 &#8211; specific changes.  Instead, they patched the Source engine itself to fix problems with Team Fortress 2, which I don&#8217;t even own.  I guess all these games share a single codebase of Source, and not forked variants. (It&#8217;s very annoying that they named their graphics engine &#8220;Source&#8221;.  That&#8217;s like naming a car &#8220;Engine&#8221;, or &#8220;Design&#8221;.  When you want to talk about the design of the Design it gets to be confusing.)  What I&#8217;m not clear on is if the games all share a single version of Source on the user&#8217;s computer, or if they simply make it a practice to keep all the versions of Source identical.<\/p>\n<p>This is an interesting approach, and I can see it would have many advantages from a development and support standpoint, although it also leads naturally to the problems I witnessed yesterday.  As the number of Source-based games proliferates, problems like this will be harder to avoid.  Making many divergent games share a single common engine leads naturally to <a href=\"http:\/\/en.wikipedia.org\/wiki\/Cruft\">cruft<\/a>, since all new versions of the engine must be fully backwards compatible with the old games.  At first this is easy, but as graphics technology changes and rendering paths change in nature the thing will naturally become more convoluted.  It happens slowly over time, but eventually battling cruft can consume a very large percentage of development costs.  The further back you want to go, the harder it is to have one set of code that can serve both the old and new purposes.  This I know from experience.<\/p>\n<p>Certainly the folks at Valve know this. Eventually the benefits of having an all-things-to-all-platforms engine will be overshadowed by the disadvantages of maintaining that system.  They will probably fork the project at that point and make &#8211; I dunno &#8211; &#8220;Source Engine 2&#8221; or somesuch.  I would guess that they would take this step when they begin work on Half Life 3.  That would be a logical point to do it, and would let them start with a clean slate and not worry about breaking stuff in a four year old game with every change they make.  <\/p>\n<p>I still wish they would do more Episodes, though. I&#8217;d rather a ten hour game every eighteen months as opposed to a twenty-five hour game every four years.  I could care less if the engine gets a little stale in the process.  The thing still looks fantastic to me.<\/p>\n<p>In the meantime, I&#8217;m going to take another try at getting Steam to <i>always<\/i> run in offline mode to keep this from happening again.  I&#8217;m glad they fixed it quickly, but it would have saved me a lot of hassle if it hadn&#8217;t happened at all.<\/p>\n<p>UPDATE: As Ian points out below, it looks like they forked the Source source this year.  There is a directory for original Source, and one for Source 2007.  That seems like a pretty good approach to me.  They can create distinct &#8220;generations&#8221; of Source games that share a common engine, but not worry about accumulating too much cruft.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>As a follow-up to yesterday&#8217;s ranting about Steam breaking my game: They fixed it last night. Whew. I was going to be quite angry if I had to go through my day off without access to my game. Sigh. I&#8217;ll probably never get used to the Jeckyl &#038; Hyde face of Valve. How the bug [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[120],"tags":[23],"class_list":["post-1430","post","type-post","status-publish","format-standard","hentry","category-videogames","tag-half-life"],"_links":{"self":[{"href":"https:\/\/www.shamusyoung.com\/twentysidedtale\/index.php?rest_route=\/wp\/v2\/posts\/1430","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.shamusyoung.com\/twentysidedtale\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.shamusyoung.com\/twentysidedtale\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.shamusyoung.com\/twentysidedtale\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.shamusyoung.com\/twentysidedtale\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1430"}],"version-history":[{"count":0,"href":"https:\/\/www.shamusyoung.com\/twentysidedtale\/index.php?rest_route=\/wp\/v2\/posts\/1430\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.shamusyoung.com\/twentysidedtale\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1430"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.shamusyoung.com\/twentysidedtale\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1430"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.shamusyoung.com\/twentysidedtale\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1430"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}