More Bioware For Linux?
GNious writes "Bioware has a thread about porting the upcoming game Dragon Age to Apple Mac OS X and/or Linux. Debate include such topics as porting houses, physics engines and the value of the market, with an enormous amount of requests for such games as Neverwinter Nights 2. With the potential for selling upwards of 1000 copies (counting individual requests) of a game at possibly $50 each, is the decision to exclude a platform and the associated revenue the correct one, or are the petitioners the ones that have gotten it wrong to think that their ca 1-5% marketshare matters?" I think the unfortunante reality is that in today's gaming market, you find that fewer people are willing to take a chance on the sales for these smaller markets -- too hard to predict revenue, and too hard to (some would say) to do the porting.
My own game engine (http://odyssey-project.com/) uses the following technologies:
Graphics: OpenGL
Sound: OpenAL
Physics: custom
Input: SDL
Network: ENet
The source compiles out-of-the-box on Windows and Linux.
Portability is not a trade off with optimization. If it is, you screwed up in your design, big time. In fact, writing portable code often means means higher quality code with fewer bugs. Fewer bugs means more time to optimize the over all code base. This means a better product over all.
If you're wondering why portable code means a better product, it's simple. Generally speaking, portable code means you're using multiple compilers. Multiple compilers will identify potential bugs and general code problems much more quickly.
Additionally, code which is designed to be portable up front also tends to be designed much better. This is because you have to have a strong low level API on which the rest of your code can sit. Violations of the design by coders is quickly identified once you start to compile on the other platforms as suddenly, it doesn't compile. You can then wrap knuckles as needed. The end is a product which is maintainable, readable, optimal, and well designed. Everyone wins.
If any of these design houses had the slightest bit of a clue, they would already have a portable, low-level API in place which is common to all of their games. This directly translates into faster time to market, fewer bugs, higher quality product, shorter testing cycles, smaller support costs, etc... And as a bonus, they obtain two additional markets (Linux and Mac) for little extra cost; assuming they do something reasonable like OpenGL at the start. Not to mention, this opens the door for the console market as then can continue to add new platform support to their low level API. The only one that becomes problematic is the Xbox because, AFAIK, no OpenGL support.
Let's face it, things like windowing, sound, input, networking, storage, and memory management is generally where the porting issues exist. If you go with OpenGL and a common, reusable library, suddenly the cost becomes moot as it is spread across n-games, as it gets reused. It's not like you have to write n-platforms when the gate opens. Heck, add to the library as you add platforms. Once a platform is in place, the next go-round is a freebe. I have no idea why coding houses are so dumb, but the math is easy to rationalize ad it just makes good business sense. Who doesn't want reduced support costs? Who doesn't want high quality games and happy, loyal customers? Who doesn't want two to three additional markets with greatly reduced effort and shorter time to market?
Let's face it...good client/server games want Linux servers. Supporting networking, storage, and memory is half of the library. Let's face it...this really is a no-brainer but it shows how clueless most coding houses truely are.
Given that I know QUITE a bit on the subject (Heh... I port games over to Linux and right now I'm off that for a little bit doing driver development consulting for one of the two aforementioned players in 3D...), I think I should comment.
Most of the extensions aren't ATI or NVidia specific that are usable. To be sure, they offer those, but most of the
extensions are ARB or EXT extensions- they're intended to be used by either player and are typically provided by
the same. The reality is that OpenGL 2.1 and DX9/10 are intrinsically identical except for programming style.
Besides, you should abstract out your engine components if you've any aspirations to target the next gen consoles-
DX10's NOT on PS3 or Wii, but OpenGL ES 2.0 IS and it's a clean, easy to use subset that ports back to MacOS and Linux.
I am not merely a "consumer" or a "taxpayer". I am a Citizen of the State of Texas