{"id":120,"date":"2016-07-25T13:47:59","date_gmt":"2016-07-25T13:47:59","guid":{"rendered":"http:\/\/dlang.org\/blog\/?p=120"},"modified":"2021-10-08T11:00:38","modified_gmt":"2021-10-08T11:00:38","slug":"d-in-games-ethan-watson-of-remedy-games-goes-to-gdc-europe","status":"publish","type":"post","link":"https:\/\/dlang.org\/blog\/2016\/07\/25\/d-in-games-ethan-watson-of-remedy-games-goes-to-gdc-europe\/","title":{"rendered":"D in Games: Ethan Watson of Remedy Games Goes to GDC Europe"},"content":{"rendered":"<p>At DConf 2013 at the Facebook HQ, Manu Evans, then of Remedy Games, gave a talk titled, &#8220;<a href=\"http:\/\/dconf.org\/2013\/talks\/evans_1.html\">Using D Alongside a Game Engine<\/a>&#8221;\u00a0(follow the link for the slides and video). He talked about Remedy&#8217;s experience getting D to work with their existing\u00a0C++ game engine. The D landscape was a bit different when they got underway than it is today. For starters, DMD did not support 64-bit targets on Windows and the language had not yet gained support for directly binding to C++. Manu&#8217;s talk discusses the steps they took to work around such issues and achieve\u00a0a working system.<\/p>\n<p>Fast forward to 2016. Remedy releases <a href=\"http:\/\/www.quantumbreak.com\/\">Quantum Break<\/a>, the first commercial AAA game to ship\u00a0with bits implemented in D. Ethan Watson comes to DConf 2016 with a talk titled, &#8220;<a href=\"http:\/\/dconf.org\/2016\/talks\/watson.html\">Quantum Break: AAA Gaming with Some D Code<\/a>&#8221;\u00a0(follow the link for the slides, go to YouTube <a href=\"https:\/\/www.youtube.com\/watch?v=OLFBal4Qo_k&amp;list=PL3jwVPmk_PRyTWWtTAZyvmjDF4pm6EX6z&amp;index=4\">for the video<\/a>). In it, he expanded on what Manu had talked about before. Now, he&#8217;s getting ready to take that message to <a href=\"http:\/\/www.gdceurope.com\/\">Game Developers Conference Europe<\/a>.<\/p>\n<blockquote><p>On the 16th of August this year in Cologne, Germany, I will be presenting a talk titled, &#8220;<a href=\"http:\/\/schedule.gdceurope.com\/session\/d-using-an-emerging-language-in-quantum-break\">D: Using an Emerging Language in Quantum Break<\/a>&#8220;. For those who have tuned in to DConf previously, it will ostensibly be a combination of both my talk from 2016 and Manu Evans&#8217;s talk from 2013, but necessarily cut down due to the fact that it will need to fit two hours of content into one.<\/p><\/blockquote>\n<p>He has more in mind than just discussing the technical aspects of Remedy&#8217;s solution. During informal discussions at DConf, Ethan spoke of how he would like to bring D to the attention of his colleagues at other studios in the game industry. His upcoming talk presents just such an opportunity.<\/p>\n<blockquote><p>The approach I&#8217;ll be taking is something of a sales pitch to other game developers. My talk at DConf this year was a bit apologetic on my part as I felt we did not use D anywhere near as much as we should, and that we still had unsolved problems at the end of it. GDC Europe will be a platform for me to talk about the journey toward shipping a game with an emerging language in use; a way to show what benefits the language has over the industry stalwart C++ and other modern languages like C# and Rust; and as a bit of a way to drum up support from other developers and get them to at least look at the language and evaluate it for their own usage.<\/p><\/blockquote>\n<p>Additionally, a future event Ethan hinted at in his DConf talk will become reality in time for GDC Europe.<\/p>\n<blockquote><p>We will also be open sourcing our binding solution for GDC. I&#8217;ve been cleaning it up over the last couple of weeks, to the point where it&#8217;s effectively a complete reimplementation designed for ease of use, ease of reading, and to support some of the additional ideas I&#8217;ve had for the system since I took over from Manu. It&#8217;ll basically be our way of saying, &#8220;D is great! Here&#8217;s some code we prepared earlier to help you get up to speed.&#8221;<\/p><\/blockquote>\n<p>That&#8217;s awesome news for the D community as a whole. D has had <a href=\"https:\/\/dlang.org\/spec\/cpp_interface.html\">built-in support for binding to C++<\/a> for a little while and it has improved over several releases, though it&#8217;s not as fully functional as the support for binding to C (a far simpler task) and likely never will be. There is also an experimental third-party solution called <a href=\"https:\/\/wiki.dlang.org\/Calypso\">Calypso<\/a>, which is a fork of the LDC compiler that ultimately aims to provide full and direct interfacing with C++. The availability of an open-source alternative that has been battle-tested in production code can only be a good thing.<\/p>\n<p>Unfortunately, there is one downside to Ethan&#8217;s presentation.<\/p>\n<blockquote><p>They&#8217;ve scheduled my talk at the same time as John Romero&#8217;s talk. Never thought I&#8217;d be competing with him for attention.<\/p><\/blockquote>\n<p>Who would want to compete for an audience with one of the co-founders of <a href=\"http:\/\/www.idsoftware.com\/\">id software<\/a> and co-creator\u00a0of franchises\u00a0like <a href=\"https:\/\/en.wikipedia.org\/wiki\/Doom_(series)\">Doom <\/a>and <a href=\"https:\/\/en.wikipedia.org\/wiki\/Quake_(series)\">Quake<\/a>, who <a href=\"http:\/\/schedule.gdceurope.com\/session\/the-early-days-of-id-software-programming-principles\">is giving a talk<\/a> about the programming principles the id team developed in their early years? Well, if you ask Ethan, the downside is that he <em>can&#8217;t skip out of his own talk for Romero&#8217;s<\/em>. Ah, well. As they say, them&#8217;s the breaks.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>At DConf 2013 at the Facebook HQ, Manu Evans, then of Remedy Games, gave a talk titled, &#8220;Using D Alongside a Game Engine&#8221;\u00a0(follow the link for the slides and video). He talked about Remedy&#8217;s experience getting D to work with their existing\u00a0C++ game engine. The D landscape was a bit different when they got underway [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[16,4],"tags":[],"_links":{"self":[{"href":"https:\/\/dlang.org\/blog\/wp-json\/wp\/v2\/posts\/120"}],"collection":[{"href":"https:\/\/dlang.org\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/dlang.org\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/dlang.org\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/dlang.org\/blog\/wp-json\/wp\/v2\/comments?post=120"}],"version-history":[{"count":9,"href":"https:\/\/dlang.org\/blog\/wp-json\/wp\/v2\/posts\/120\/revisions"}],"predecessor-version":[{"id":129,"href":"https:\/\/dlang.org\/blog\/wp-json\/wp\/v2\/posts\/120\/revisions\/129"}],"wp:attachment":[{"href":"https:\/\/dlang.org\/blog\/wp-json\/wp\/v2\/media?parent=120"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/dlang.org\/blog\/wp-json\/wp\/v2\/categories?post=120"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/dlang.org\/blog\/wp-json\/wp\/v2\/tags?post=120"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}