{"id":2696,"date":"2014-01-21T09:29:58","date_gmt":"2014-01-21T09:29:58","guid":{"rendered":"http:\/\/positech.co.uk\/cliffsblog\/?p=2696"},"modified":"2014-01-21T09:29:58","modified_gmt":"2014-01-21T09:29:58","slug":"what-a-directx-developer-does-in-a-steambox-world","status":"publish","type":"post","link":"https:\/\/www.positech.co.uk\/cliffsblog\/2014\/01\/21\/what-a-directx-developer-does-in-a-steambox-world\/","title":{"rendered":"What a directx developer does in a steambox world"},"content":{"rendered":"<p>Elaborating on my last post. Valve have made it pretty clear they are heavily betting on Linux. Microsoft, you missed the ball. You didn&#8217;t get the hint. What action did you take to get valve back? Apparently not enough. Regardless&#8230; Linux will be big for gaming. It&#8217;s 2% of my sales right now. This is going to grow and grow fast.<br \/>\nThis is no big deal to me, apart from the fact that Linux also means OpenGL. I currently have my own engine which uses DirectX. What should I do? Here are my options&#8230;<\/p>\n<p><a href=\"http:\/\/positech.co.uk\/cliffsblog\/wp-content\/uploads\/2014\/01\/steambox.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-2697\" alt=\"steambox\" src=\"http:\/\/positech.co.uk\/cliffsblog\/wp-content\/uploads\/2014\/01\/steambox.jpg\" width=\"640\" height=\"353\" srcset=\"https:\/\/www.positech.co.uk\/cliffsblog\/wp-content\/uploads\/2014\/01\/steambox.jpg 640w, https:\/\/www.positech.co.uk\/cliffsblog\/wp-content\/uploads\/2014\/01\/steambox-300x165.jpg 300w, https:\/\/www.positech.co.uk\/cliffsblog\/wp-content\/uploads\/2014\/01\/steambox-317x174.jpg 317w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/a><strong>1) Do nothing.<\/strong><br \/>\nJust stick with it. 2%? Even if it goes up to 20% so what? My current system is me doing the directx version, then paying a contractor to handle the OSX &amp; Linux ports by converting it all to OpenGL. This works fine so far. This option is easy, but it seems like I just go further down a dead end. I don&#8217;t want to be the last guy using DirectX.<\/p>\n<p><strong>2) Prepare my engine to be more cross-platform friendly<\/strong><br \/>\nI could re-engineer my code so that it&#8217;s more modular and easier (re: cheaper, faster) to port to OSX\/Linux. This way I still keep directx, but make things simpler for a future transition. This is appealing because it&#8217;s a hedge towards either direction, and frankly engines should be built like this anyway.<\/p>\n<p><strong>3) Learn OpenGL.<\/strong><br \/>\nThis is the hardest because it involves serious work. I know everyone will say &#8216;it&#8217;s really similar&#8217;, but being &#8216;familiar&#8217; with OpenGL isn&#8217;t what I want. Being VERY sure I know the BEST way to use OpenGL for my purposes is what I need. I love optimizing. I love pushing to get as rich a 2D experience as the hardware allows. I don&#8217;t want to trade a really fast DirectX engine for a slow OpenGL one. This involves the most work, to do it right. There is huge opportunity cost for that time as a programmer. This is also by far the most future-proof.<\/p>\n<p><strong>4) Hire a full time Linux\/OpenGL coder.<\/strong><br \/>\nNot a sensible option for me. I couldn&#8217;t keep them busy, I still don&#8217;t learn anything, and this is effectively 1) but more expensive and with more admin. All it does is guarantee me availability, but at too high a price.<\/p>\n<p><strong>5) Switch to middleware.<\/strong><br \/>\nAn option for 95% of devs. I hate middleware in general, but I also do something very unusual. The engine for GSB 2 works in a very specific way. At it&#8217;s core, it is a heavily optimised, shader &amp; post-processing based, lots of render-target flipping 2d engine that assumes a huge amount of 2D objects. I&#8217;m not aware of any engines designed specifically to do this except mine. Plus there are costs in terms of learning that new engine,\u00a0 which represents investment in something I neither own or control. I don&#8217;t like this.<\/p>\n<p>I&#8217;m thinking about this a lot. I&#8217;m currently favoring 2), Possibly 3). I have discounted 4) and 5). Doing 1) seems lazy. This is something I need to get right at some point this year.<br \/>\nFeel free to add your thoughts :D<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Elaborating on my last post. Valve have made it pretty clear they are heavily betting on Linux. Microsoft, you missed the ball. You didn&#8217;t get the hint. What action did you take to get valve back? Apparently not enough. Regardless&#8230; Linux will be big for gaming. It&#8217;s 2% of my sales right now. This is<\/p>\n<p class=\"text-right\"><span class=\"screen-reader-text\">Continue Reading&#8230; What a directx developer does in a steambox world<\/span><a class=\"btn btn-secondary continue-reading\" href=\"https:\/\/www.positech.co.uk\/cliffsblog\/2014\/01\/21\/what-a-directx-developer-does-in-a-steambox-world\/\">Continue Reading&#8230;<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3,4],"tags":[],"class_list":["post-2696","post","type-post","status-publish","format-standard","hentry","category-business","category-programming"],"_links":{"self":[{"href":"https:\/\/www.positech.co.uk\/cliffsblog\/wp-json\/wp\/v2\/posts\/2696","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.positech.co.uk\/cliffsblog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.positech.co.uk\/cliffsblog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.positech.co.uk\/cliffsblog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.positech.co.uk\/cliffsblog\/wp-json\/wp\/v2\/comments?post=2696"}],"version-history":[{"count":1,"href":"https:\/\/www.positech.co.uk\/cliffsblog\/wp-json\/wp\/v2\/posts\/2696\/revisions"}],"predecessor-version":[{"id":2698,"href":"https:\/\/www.positech.co.uk\/cliffsblog\/wp-json\/wp\/v2\/posts\/2696\/revisions\/2698"}],"wp:attachment":[{"href":"https:\/\/www.positech.co.uk\/cliffsblog\/wp-json\/wp\/v2\/media?parent=2696"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.positech.co.uk\/cliffsblog\/wp-json\/wp\/v2\/categories?post=2696"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.positech.co.uk\/cliffsblog\/wp-json\/wp\/v2\/tags?post=2696"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}