Some time ago, I offered to do an interview with my good friend flibitijibibo (Ethan Lee) about the work he'd been doing with the independent game development studio 12characters, and the contributions he had made to several Free/Open Source projects. Fourteen months and several collaborations later, our schedules have finally coincided, though flibit (as he is known) is now working as an independent game porter, with three cross platform titles under his belt, and one in-progress Humble Bundle port.
In this, the third part of this interview, look at flibit's approaches to porting, his experiences with packaging games for the currently in-beta GNU/Linux Steam client, and some of his community endeavours. Part one and part two are also live.
What sort of approaches and methodologies do you use when working on a porting project? What do you feel are the critical aspects?
I can answer both with one question I always ask: "What is going to ensure that this engine will be cross-platform for-freaking-ever?" One of the worst pitfalls of a port is that it's one step away from being a fork that gets thrown away the second the port is released. All of my games are designed to work on Windows as well, and are meant to be used in upstream for those companies. Some devs will even ask if I can design it this way, and I always reply with an enthusiastic "yes!"
For specifics, it varies way too greatly for me to suggest one generic approach. You're better off reading one of my port blogs (or, well, currently just Waveform, but I want to write more of these).
What 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.
You've also been packaging up ports of some of the previous titles you've worked on for Linux deployment via Steam. How has this met your expectations both from a development perspective and from a community perspective?
Steamworks itself is pretty much as easy as it's always been, and I'm glad about that. I will express some disappointment with how the beta launch went, both the developer adoption and the shakiness of the client and its components. Currently none of my games fully cooperate with the overlay, and for some reason Waveform's cloud saves are disabled. Things like that have been pretty annoying, but most of the issues were figured out by the active developers cooperating to get things working (Valve and nVidia included). I expect this to continue too, so as disappointed as I am in the beta launch, I imagine the public launch will be much MUCH better.
Speaking of community, over the past couple of years, you've been active in the community of Linux users using Steam, previously through Wine and more recently using the Steam for Linux beta client. Can you talk about what motivated you to take part in and what has come out of projects like The Big List of 3rd Party DRM on Steam, the Big List of Steam Games on GNU/Linux, and the Steam Linux Users Group?
Enthusiasm for customer awareness, my love of  and the ability for like-minded people to make advancements in these areas. Not much to it, really. The lists and groups themselves weren't anything I just magically came up with, though... every one of those were either previously maintained by someone else or were things that the community needed and I could provide.
For the most part, I think I've made more people aware of these sorts of things. Probably not a huge number, but even chipping away just slightly at the monolith of people with unintentionally misinformed opinions is notable, at least to me.
What impact do you feel these have had on Linux gamers and the broader the Steam user community, and what impact have they had on you?
I don't think it's necessarily affected Linux users in any real way, other than giving them some resources that they asked for (and probably could have gotten elsewhere... we're a versatile bunch, I think!). The Steam community (and PC gamers in general) seem to have gotten a ton out of SteamDRM, apparently being the go-to DRM resource for places like Reddit and so on... SteamLinux never really took off until Valve announced Steam for Linux, where it got linked to by PC Gamer and a couple other sites. It's hard to say if SteamLinux made any long-term impact, but SteamDRM almost certainly gave Steam customers something that Valve hasn't been able to provide in the Steam store quite as well.
Could you describe your development environment? What tools and platforms do you make use of?
To start, the part everyone looks for first: I use Fedora x86_64 with Gnome 3 on all of my machines, with Mint/Ubuntu x86 available for testing. Considering moving to Cinnamon if it turns out Gnome 3.6 sucks as much as people say it does.
On my left is a lappy, runs IRC, Skype, Empathy and Thunderbird. My main tower runs Thunderbird, Skype, Empathy and Steam. I'll have gedit on one side of the screen and a terminal in the other, with either Nightingale (current soundtracks: Silent Hill 2, Dustforce, Eufloria, RUSH) or YouTube (current addictions: QI, Game Grumps, JonTron) open behind the work stuff. I'll use vim if I want to do a quick edit and gedit is closed, but gedit is actually pretty good with a good color scheme set.
When I do audio I usually close everything except for the DAW, since DAW's on every OS are massive resource hogs, leaving everything else to the lappy.
A lot of my hardware is described over here.
Where do you see yourself in two years' time?
I can't answer the question. If I thought that far ahead I'd probably still be a fearful college student just doing what I was told, hoping everything would be okay despite knowing that it wouldn't be. I'll just go with "wherever two years of what I need to do takes me."
What is your favourite game?
I'm going to willfully ignore your use of the singular form of "game" and talk about some games that I really really like. :3
Metroid Prime Trilogy is an excuse for me to call three games one game because it's on a single disc. I absolutely love Metroid Prime. It has just about every element that I enjoy from every genre that I'm interested in, combined with everything that makes Metroid wonderful in every way. Retro Studios has a nag for taking existing IP's and experimenting heavily with them, but being damn sure not to ruin what made them good in the first place. On top of this, the amount of detail they put into every pixel of the game is positively staggering. Donkey Kong Country Returns was a similar story. I'm putting all my Internets on them making the next Star Fox game... that would friggin' rule.
Games that confidently experiment with existing models are the ones that I enjoy the most. Eversion and Blueberry Garden were games that I ported mostly because I enjoyed them so much when I first played them many years ago. If you've not played these games, you really ought to.
On the other hand, I really like games that take existing models that we all recognize as functional, and then refines them to extraordinary levels. I really enjoyed Rayman Origins, and Warsow is probably my favorite Quake-like. Torchlight 2 did this so well that it got me looking at other ARPG's, a genre that I almost never touched until I played the beta with some of my friends.
You can mix and match these, as well. Splinter Cell: Chaos Theory took its own model of gameplay and made it extremely well-polished, on top of doing some interesting new things to make it feel... well, new (Amon Tobin's soundtrack to SC:CT is still one of my favorites). Deus Ex: Human Revolution also did this pretty well in making a new Deus Ex game that stood on its own, rather than haphazardly copying the original Deus Ex and slapping modern mechanics onto it. I've not finished Dishonored yet, but so far I'm loving it as something in this category.
Is there anything else you'd like to add?
Aspiring game developers! Quit aspiring and start developing! Yes, you! You made it through this wall of text, I think you can handle getting a basic platformer up and running. Get to it!
xpander69: Do you have some porting jobs at bigger companies.( e.g. Riot, Eidos, EA etc), if thats not any secret? *
I do not. It'd be neat working with someone like Ubisoft or SEGA, but they probably aren't calling guys like me anymore. :P
Hannah: No interview with you would be complete without requesting a pronunciation guide for your nickname. *
flibitijibibo - All of the i's are short except for the last one. flih-bih-tih-jih-bye-boh. Best pronounced as three triplet eighths, two eighths and a quarter. Should be three whole beats combined.
Thanks for your time, flibit, and good luck with the Vessel and your future projects!
Thanks for reading!
Questions marked with an asterisk (*) have been submitted by community members/friends/people who are not me.
First up, a nice big, fat disclaimer: flibit and I are friends. We've worked together on a couple of projects over the past year and a half, we're both operators of the #steamlug channel on Freenode.net, he's an admin of the Linux Steam group I now run, I started Para CMS as a base for a revamp of his Big List of 3rd Party DRM on Steam, I've assisted him with testing several of his ports, I made the CLI/headphones avatar he currently uses, and he's offered feedback and encourgement on many of my projects, so I'm totally biased when I say that he's a great guy and fun to work with. It's been a pleasure to watch him discover game porting, and I'm definitely interested to see where things take him from here.
I know that some of my readers have anxiously been waiting for this interview in the hopes that it would reveal more details about the status of Vessel, the Humble Bundle port that flibit was not able to complete before the Humble Indie Bundle 6 ended. Knowing that flibit intends to keep his Vessel development blog with the most up-to-date news, I intentionally steered clear of Vessel specific questions, allowing flibit's responses to be his own. Apologies to anybody who feels cheated, but I feel like what we've ended up with is of more lasting interest, and current Vessel info can still be found on flibit's bloggy thing.
To supplement flibit's response to a community "question" about how to pronounce his name, here's some phonetic stuff and a soundbyte: /flɪbɪtɪ'dʒɪ'baɪboʊ/
You can email me at firstname.lastname@example.org
This interview was first published on the 14th of November 2012.