{"id":2086,"date":"2010-05-17T14:27:26","date_gmt":"2010-05-17T19:27:26","guid":{"rendered":"http:\/\/www.hemispheregames.com\/?p=2086"},"modified":"2015-02-04T06:45:41","modified_gmt":"2015-02-04T06:45:41","slug":"porting-osmos-to-linux-a-post-mortem-part-13","status":"publish","type":"post","link":"https:\/\/www.hemispheregames.com\/new_blog\/2010\/05\/17\/porting-osmos-to-linux-a-post-mortem-part-13\/","title":{"rendered":"Porting Osmos to Linux: A Post-Mortem (part 1\/3)"},"content":{"rendered":"<p>A couple of weeks ago, we <a href=\"\/2010\/04\/28\/linux-osmos-release\/\">announced the release<\/a> of Osmos on Linux.  Even before I had finished the port, we had been invited by a few members of the Linux community to do a post-mortem on our experiences.    We were asked, &#8220;What would have made the port easier?&#8221;  It was pointed out to us that while some indie developer forays into Linux had resulted in drama (viz. John Blow&#8217;s <a href=\"http:\/\/braid-game.com\/news\/?p=364\">inquiries into Linux<\/a> back in August 2008 as he was considering porting Braid to Linux), it was hoped that more indies would &#8220;take the plunge&#8221; and share their experiences with the Linux community, to work together towards developing Linux into a platform for gaming.<\/p>\n<p>Our response was, &#8220;Great idea!&#8221;  Last week, when I finally had time to sit down and begin writing, I discovered there was quite a lot to say about my experiences &#8212; more, I think, than fits comfortably into a single blog post.  So, nearly three weeks after Osmos&#8217; launch on Linux, allow me to present the first of three daily installments of the Osmos Linux post-mortem!<\/p>\n<p>In this post, I&#8217;d like to lay a bit of groundwork by describing where we&#8217;re coming from.  First then, three main points:<\/p>\n<h2>\n1) As a studio, we are (and continue to be!) open-minded and hopeful about Linux as viable platform for games.<br \/>\n<\/h2>\n<p>AAA shops have essentially stopped porting games to Linux (viz. the latest positions of long-time Linux proponents id and Epic).  Conventional wisdom in the games industry is that you can&#8217;t pay the bills making games for Linux because the market isn&#8217;t big enough relative to the cost of development.  Hemisphere Games, however, is an indie studio, and our development costs are much lower; we don&#8217;t have as many mouths to feed, and our aim is for smaller-budget titles.  So, it isn&#8217;t as obvious that this wisdom holds in our case.<\/p>\n<p>Porting Osmos to Linux has been an experiment for us as a studio.  Is it worth porting games to Linux?  We sure hope so, but we&#8217;ll have to see!  We had a nice sales spike our first week, but it&#8217;s trailing off fast; we&#8217;re waiting to see what the tail is like, as news about the availability of Osmos on Linux gets around.  In a few weeks, we&#8217;re going to publish some sales stats and share our analysis on the prospects for the various platforms from the perspective of game development.  This post-mortem can therefore be viewed as a sort of prequel to the sales and market analysis still to come.<\/p>\n<h2>\n2) Our goal in these articles is to help the Linux platform, not to condemn it.<br \/>\n<\/h2>\n<p>The word criticism literally means &#8220;to discern the value of a thing&#8221;; criticism a good and essential part of growing.  In continuity with my first point, our objective with these articles is to help the Linux folks learn about their platform, to offer perspective about where its strengths and weaknesses lie.  We want to be open and honest in our description of our experiences as game developers working with Linux for the first time.  The intent of my feedback is to share what Linux is like for first-time users and developers, where the barriers to entry lie &#8212; essentially, what works, what&#8217;s broken, what&#8217;s attractive and what&#8217;s a turn-off!<\/p>\n<p>Please let this be abundantly clear: we want to provide <em>helpful<\/em> insight into what Linux looks like for game developers &#8212; to <em>constructively<\/em> critique Linux as a gaming platform, for the purposes of <em>improving<\/em> it, not tearing it down.<\/p>\n<h2>\n3) Our hope is that the experiences and opinions we share will be carefully considered, given our position as seasoned game and engine developers.<br \/>\n<\/h2>\n<p>Leading up to this post-mortem, I&#8217;ve already shared a bit of my perspective with members of the Linux community in a couple of contexts.  I&#8217;ve found there are three common ways my perspective gets dismissed without engagement:<\/p>\n<ol>\n<li>&#8220;These comments are coming from a terrible game designer&#8230; If you&#8217;re a good developer you get things done&#8221;;<\/li>\n<li>&#8220;id and Epic port their games successfully to Linux, why can&#8217;t you?&#8221;<\/li>\n<li>&#8220;You should have hired a Linux-pro to do the port rather than attempting it yourself&#8221;<\/li>\n<\/ol>\n<p>Let me respond with two comments.  Firstly, observe that the final Osmos Linux port is very polished and successful from a technical standpoint, as evidenced e.g. by the favourable reviews, warm comments on our forums, the wide number of configs supported, the smooth package installation process, the excellent performance even on low-end machines, etc.  Secondly, I invite our critics to <a href=\"\/about\">examine our credentials<\/a>.  For the sake of this post-mortem article, note that I <em>was at Epic<\/em> as one of the handful of people on the Unreal Engine, and therefore 1) I have a bit of perspective into how things are done and what attitudes are like at shops like these; and 2) I&#8217;ve written a bit of code on one or two platforms in my day.<\/p>\n<p>So, I hope it&#8217;s clear where we&#8217;re coming from; we&#8217;re friends of Linux, not enemies!<\/p>\n<p>Let me also say a few words about the Osmos codebase itself.<\/p>\n<h1>\nA Brief Overview of the Cross-Platform Life of Osmos<br \/>\n<\/h1>\n<p>From very early on in the project, it was decided to build Osmos from-the-ground-up with cross-platform compatibility in mind.  Before I joined the project in September 2008, Eddy had (very rightly) decided that OpenGL, OpenAL, libvorbis\/libogg and FreeType would be the core libraries on which the game was based (SDL was not an option for us for a variety of reasons; while useful in some contexts, SDL is fairly high-level and not a friendly solution 1) for the kinds of low-level processing that many games need to do, particularly with sound and input; and 2) when considering portability to consoles).  The game was initially released on the PC in August 2009.  Shortly to follow,  we simultaneously launched two ports in December 2009: a version of Osmos for Mac\/OSX (ported by our resident Mac\/iPhone specialist Aaron Barsky) and a multitouch-and-D3D version of the game for Win7 launch and the new &#8216;Games For Windows &#8212; LIVE&#8217; platform.  There have also been iPhone and iPad versions of Osmos in production since January 2010, as well as other dark and mysterious initiatives afoot (more details on these soon!)<\/p>\n<p>So, by the time we came &#8217;round to the Linux port in March 2010, Osmos had already been ported a couple of times and therefore the codebase was mature, stable, and proven from a portability standpoint.  We considered hiring out the Linux port, but were wary about it.  We were unsure about how much revenue the port would bring in.  All ports to date had been done in-house, and so our processes were ironed out and we knew what to do.  And anyway, since we&#8217;d need to have a heavy involvement in the port for the sake of assuring quality even if it was contracted out, we decided in the end to simply do it ourselves.  I was the only person on the port, and the entire process, including the closed beta took six weeks.   I have no serious experience with Linux beyond being an end-user in the labs back in grad-school.<\/p>\n<p>So, with all this as preamble, we&#8217;ll get on to the meat of my experiences with Linux in <a href=\"\/2010\/05\/18\/porting-osmos-to-linux-a-post-mortem-part-23\/\">tomorrow&#8217;s post<\/a>!  Stay tuned&#8230;<\/p>\n<p>Dave<\/p>\n","protected":false},"excerpt":{"rendered":"<p>A couple of weeks ago, we announced the release of Osmos on Linux. Even before I had finished the port, we had been invited by a few members of the Linux community to do a post-mortem on our experiences. We were asked, &#8220;What would have made the port easier?&#8221; It was pointed out to us [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[3,7,11],"tags":[],"class_list":["post-2086","post","type-post","status-publish","format-standard","hentry","category-dev","category-linux","category-osmos"],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/p5C9wi-xE","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.hemispheregames.com\/new_blog\/wp-json\/wp\/v2\/posts\/2086","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.hemispheregames.com\/new_blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.hemispheregames.com\/new_blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.hemispheregames.com\/new_blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.hemispheregames.com\/new_blog\/wp-json\/wp\/v2\/comments?post=2086"}],"version-history":[{"count":1,"href":"https:\/\/www.hemispheregames.com\/new_blog\/wp-json\/wp\/v2\/posts\/2086\/revisions"}],"predecessor-version":[{"id":4471,"href":"https:\/\/www.hemispheregames.com\/new_blog\/wp-json\/wp\/v2\/posts\/2086\/revisions\/4471"}],"wp:attachment":[{"href":"https:\/\/www.hemispheregames.com\/new_blog\/wp-json\/wp\/v2\/media?parent=2086"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.hemispheregames.com\/new_blog\/wp-json\/wp\/v2\/categories?post=2086"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.hemispheregames.com\/new_blog\/wp-json\/wp\/v2\/tags?post=2086"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}