My latest "cheese talks to" interview is live, this time talking with cross platform game porter flibitijibibo (Ethan Lee) about porting games, software development and his community endeavours.
In this three part interview, we trace flibit's path through modding and game development, eventually leading him to porting several indie games to MacOS/Linux (including Vessel from the Humble Indie Bundle 6, Waveform, Eversion and Blueberry Garden). We also cover the hurdles and pleasant surprises associated with migrating others' code to new platforms, and touch on flibitijibibo's assorted activities within the Steam and Linux communities.
Here are a couple of snippets:
http://cheesetalks.twolofbees.com/flibitijibibo1.php
Enjoy!
In this three part interview, we trace flibit's path through modding and game development, eventually leading him to porting several indie games to MacOS/Linux (including Vessel from the Humble Indie Bundle 6, Waveform, Eversion and Blueberry Garden). We also cover the hurdles and pleasant surprises associated with migrating others' code to new platforms, and touch on flibitijibibo's assorted activities within the Steam and Linux communities.
Here are a couple of snippets:
QuoteHow do you find game porting to differ from game development?
There's a lot more debugging in porting, at least in my experience. I'm a colossal pain in the ass about portability/code quality though, so anything I work on from the start tends to require a lot less time in QA. I like to think that this carries into my port work, but it's probably not as much as I want it to be.
I also tend to learn a lot from my porting. I'll only delve into what I would put in my own engines if I work alone, but when dealing with other engines I'm forced to broaden my horizons a bit more. Here are some things I learned to port some of my games (some of these may shock you):
- Waveform: Win32 threading, WGL/CGL/GLX, Win32 API
- Blueberry Garden: C#, Mono, XNA, basic Direct3D-ish stuff, MonoGame (basically everything, but I still ported it to Linux in a weekend!)
- Eversion: Ruby, and how it's a pain on OSX
- Vessel: Advanced Direct3D, MojoShader, MojoDDS
As you can see, a lot of these things I just learn as I port. Is this bad? I don't know, maybe. I've been able to get these out in a timely manner, so I can't be sure. So far the only project that's been impacted by this is Vessel, but that's also the largest project I've ever worked on. It's hard to tell, at least from my perspective. Maybe someone sensible will read this and tell me I'm a phenomenal idiot for learning things after I take the project.
QuoteHow do you feel that commercial games fit within the Free Software ecosystem?
Right now commercial projects are the main source of professional developers in the Free Software universe. Commercial projects need open libraries, open libraries need work, developers work on those libraries.
Of course, we'd all like for developers to release the main project source as well, but this is where we're at, currently. There are still a lot of people developing on proprietary libraries/frameworks as well, so I think we should keep working at making the free/open libraries the best they can be. Think of it as attacking from all sides, I guess.
QuoteWhat do you consider to be the values of cross platform software to gamers, developers and the industry as a whole?
Games, from a business standpoint, should not be dependent on a single platform. If something goes horribly wrong with one platform (Windows 8?), it shouldn't be grounds for a catastrophe, and it should be possible for the industry as a whole to move freely between platforms to provide gamers and game developers to provide the best experience possible without having to force anyone into using software they'd rather not use. If you think this is silly, read the last sentence again with DRM in mind, rather than platform dependency.
QuoteWhat key factors contribute to the ease or difficulty of a port?
Use of F/OSS libraries helps. Use of cross-platform libraries helps even more. Strict use of multiple static analysis tools helps even more. Use of compilers other than Visual Studio's helps even more. All of these things aren't just portability concerns, they're code quality concerns. High code quality = easy port work, plain and simple.
Liberal use of Visual Studio's liberal compiler is annoying. Misuse of asserts and NDEBUG is irritating. Trying to come up with your own clever asset packaging format is infuriating. Use of OS-dependent low-level APIs is agonizing. Use of DirectX is a death wish.
http://cheesetalks.twolofbees.com/flibitijibibo1.php
Enjoy!
Some you may have missed, popular articles from the last month:
All posts need to follow our rules. For users logged in: please hit the Report Flag icon on any post that breaks the rules or contains illegal / harmful content. Guest readers can email us for any issues.
12 comments
A very interesting read, thanks.
Living in the feature, aren't we? :DD
This interview was first published on the 16th of November 2012.
Living in the feature, aren't we? :DD
0 Likes
Fantastic interview! Thank you both for sharing.
0 Likes
Read this this morning (noticed a link on Twitter), fantastic interview! Is there any chance you could do the same with Edward Rudd and Ryan C. Gordon?
Also, I want to know the next port. What is it?!
Also, I want to know the next port. What is it?!
0 Likes
A very interesting read, thanks.
Living in the feature, aren't we? :DD
Living in the future is a cheesetalk feature. ;)
(I love the name "Flibitijibibo". :) )
0 Likes
Thanks guys :D
I was originally planning to publish tomorrow and hadn't updated the date on all three pages ^_^
This is something I'd be interested in (although I imagine I'd take slightly different angles with each). A lot will depend on their availability/interest when I'm ready :)
I've got a few other articles and interviews I've got lined up that I'd like to get through before seeing whether they'd be keen.
flibit isn't able to give details of his upcoming port(s), so he's "codenamed" his next project "lolno". Sadly, some developers don't like to be open (and it can potentially be pretty damaging for everyone if a port is announced too early and people end up losing hope in it ever being released).
I was originally planning to publish tomorrow and hadn't updated the date on all three pages ^_^
Read this this morning (noticed a link on Twitter), fantastic interview! Is there any chance you could do the same with Edward Rudd and Ryan C. Gordon?
This is something I'd be interested in (although I imagine I'd take slightly different angles with each). A lot will depend on their availability/interest when I'm ready :)
I've got a few other articles and interviews I've got lined up that I'd like to get through before seeing whether they'd be keen.
Also, I want to know the next port. What is it?!
flibit isn't able to give details of his upcoming port(s), so he's "codenamed" his next project "lolno". Sadly, some developers don't like to be open (and it can potentially be pretty damaging for everyone if a port is announced too early and people end up losing hope in it ever being released).
0 Likes
Thanks guys :D
I was originally planning to publish tomorrow and hadn't updated the date on all three pages ^_^
This is something I'd be interested in (although I imagine I'd take slightly different angles with each). A lot will depend on their availability/interest when I'm ready :)
I've got a few other articles and interviews I've got lined up that I'd like to get through before seeing whether they'd be keen.
flibit isn't able to give details of his upcoming port(s), so he's "codenamed" his next project "lolno". Sadly, some developers don't like to be open (and
I think something ate your letters.
But yeah, I understand that that's the issue there. We'll learn sooner or later, and if the port works as well as Waveform (with a few minor bugs that are still being worked on), I'm sure everyone will be happy.
I do hope you're able to get interviews with them later.
0 Likes
I think something ate your letters.
Fixed. I think time ate them - I was running a little late this morning.
But yeah, I understand that that's the issue there. We'll learn sooner or later, and if the port works as well as Waveform (with a few minor bugs that are still being worked on), I'm sure everyone will be happy.
flibit has actually released [URL='http://flibitijibibo.com/oh.html']an update[/URL] to oh.html talking about where things are at. Sadly, it doesn't seem like he's as keen to update it as I at first thought.
I do hope you're able to get interviews with them later.
Thanks, me too :)
0 Likes
Yeah, I guess we wouldn't want another UE3.
I know about Vessel, it's very playable now, but not entirely playable.
I'm not sure what do you mean by 'Sadly, it doesn't seem like he's as keen to update it as I at first thought.' The page? Or a port? Or what exactly?
I know about Vessel, it's very playable now, but not entirely playable.
I'm not sure what do you mean by 'Sadly, it doesn't seem like he's as keen to update it as I at first thought.' The page? Or a port? Or what exactly?
0 Likes
I know about Vessel, it's very playable now, but not entirely playable.
From what I understand (I haven't tested a build in a while), it's entirely playable - the remaining issues are cosmetic.
I'm not sure what do you mean by 'Sadly, it doesn't seem like he's as keen to update it as I at first thought.' The page? Or a port? Or what exactly?
As mentioned in the footnotes of my interview, I specifically avoided asking about Vessel directly, as I knew that flibit was planning to update his page. His most recent update says it will probably be the last (hopefully no more are needed anyway).
0 Likes
From what I understand (I haven't tested a build in a while), it's entirely playable - the remaining issues are cosmetic.
As mentioned in the footnotes of my interview, I specifically avoided asking about Vessel directly, as I knew that flibit was planning to update his page. His most recent update says it will probably be the last (hopefully no more are needed anyway).
Yeah, it doesn't really crash anymore and the performance is fine. All-in-all it's almost playable, but the game is still prone to crash due to some graphics related bugs. So it isn't just cosmetic issues. And then there's the bug that's similar to Trochlight's missing heads. But the second one is unimportant for now.
But looking at the current state, I think that it's going to be here before the end of November, as was stated.
0 Likes
Yeah, it doesn't really crash anymore and the performance is fine. All-in-all it's almost playable, but the game is still prone to crash due to some graphics related bugs. So it isn't just cosmetic issues.
flibit tells me there aren't any crash causing bugs left that are graphics related, so if you've been testing, and you've encountered something that appears to be so, make sure you report it.
0 Likes
There are three major blockers left before I can stamp Vessel with an RC tag:
- Outdated assertions. Best case, I just have to delete some of these. Worst case, I compile with NDEBUG.
- Fluro eyeballs. At first glance they're just missing, which I thought was a scripting issue, but something else is going on (looking at it right now). This sounds like a minor issue, but it's the source of every crash I've got in the bug tracker that's not an assertion. This needs to be fixed.
- Color channels. Some materials are still the wrong color, including lighting. Will be doing this last.
There are other things I may address if I can get it in a November release, but none of them are game-breaking or even problematic (and a couple of them could possibly require editing the content files, which I'm avoiding at all costs). Of course, there may be other bugs that I have to fix, but currently Vessel is doing pretty well in QA.
- Outdated assertions. Best case, I just have to delete some of these. Worst case, I compile with NDEBUG.
- Fluro eyeballs. At first glance they're just missing, which I thought was a scripting issue, but something else is going on (looking at it right now). This sounds like a minor issue, but it's the source of every crash I've got in the bug tracker that's not an assertion. This needs to be fixed.
- Color channels. Some materials are still the wrong color, including lighting. Will be doing this last.
There are other things I may address if I can get it in a November release, but none of them are game-breaking or even problematic (and a couple of them could possibly require editing the content files, which I'm avoiding at all costs). Of course, there may be other bugs that I have to fix, but currently Vessel is doing pretty well in QA.
0 Likes
Currently working on Winter's Wake, a first person text adventure thing and its engine Icicle. Also making a little bee themed base builder called Hive Time :)
I do more stuff than could ever fit into a bio.
See more from me