Welcome, Guest. Please login or register.

Login with username, password and session length

 
Advanced search

1411502 Posts in 69373 Topics- by 58429 Members - Latest Member: Alternalo

April 25, 2024, 03:13:52 PM

Need hosting? Check out Digital Ocean
(more details in this thread)
TIGSource ForumsDeveloperBusinessGames + Linux = Profit ?
Pages: [1]
Print
Author Topic: Games + Linux = Profit ?  (Read 3132 times)
MikeDee
Level 1
*



View Profile
« on: July 25, 2009, 02:34:18 PM »

The Linux community is growing but developers usually overlook the Linux platform as profitable gaming platform.
The fact that there are way less games available should be be seen as golden opportunity, but unfortunatly developing for Linux also has a has one major problem, which was actually supposed to be a strongness.
I'm talking about the many distros available. Developing and porting a different version for each distro or Linux variation just doesn't make much sense considering the size of the Linux market.

I am a Ubuntu user, and while I don't look at it as a gaming platform, I can't help but think some games would be nice to have. There are many open source games for Linux, but for some reason they release the binaries for the other platforms and leave the Linux with the source only, which for a non-developer is totally useless.

Wine still has a long way to go before you can play game decently with it, all the games I tried ran either too slow to be playable or with major graphical glitches. And in many cases I experienced both problems at the same time.

I ported some of the games I made using SDL with success to Linux without any problems, so I believe porting games from windows to linux is mostly a matter of owning or not a Linux distro.

Ok so now I'd like to hear your opinions, Linux as gaming platform is profitable or not ? Why ?
Logged
Eclipse
Level 10
*****


0xDEADC0DE


View Profile WWW
« Reply #1 on: July 25, 2009, 02:41:22 PM »

it should be profitable for sure, but not as Mac or Windows.
Also linux users, at least the opensource cultists usually do not buy closed software, yes, even games.

Anyway is a sort of unmarked land, so there's surely a margin of profit for who dares... maybe someone that ported his game to linux will tell us some numbers
Logged

<Powergloved_Andy> I once fapped to Dora the Explorer
mcc
Level 10
*****


glitch


View Profile WWW
« Reply #2 on: July 25, 2009, 03:54:47 PM »

The problem is building and distributing binaries. There's this forest of different library versions and distributions and etc... there are tricks to make a linux binary that runs on "most" systems but I'm not sure you can make one executable that runs on everything out there. (At the least your executable won't work on non-x86 systems, though I don't know if anyone cares about that anymore.) Plus it's just a lot of work-- I made a crossplatform game awhile back and then belatedly released a linux version, despite my best efforts it apparently had issues on 64 bit systems and lacked the fullscreen/windowed switch the mac and linux versions had. Since the game was SDL I think it in the end actually worked better in Wine than if you ran the native Linux version. Setting up linux binary distribution is just a lot of work for one person and testing is for one person just impossible. (At least, this was my experience. You say you've ported games to Linux, if your experience was different I'd be curious to hear about it.)

The only good way to distribute Linux software is as source. However this seems incompatible with the idea of making Linux games for money. (The other problem you mention-- that source would be offputting to low-level users-- I don't think is such a big deal, since if you decided to acknowledge the Linux users who don't know how to use "make" then you could hide the compilation inside of an installer program potentially.) People do make money off of open source software, but very few of the people doing this successfully are selling their software under the business model we normally see with games-- i.e., give me $10 and I will give you a copy of this video game. Most people profiting from open source software seem to be following some kind of an alternate model, such as giving away the software and selling support or side services.

I think that in order for games to be viable on Linux you'll need something like a Steam-like service that is capable of scoping out your system and giving you a binary tailor-made to it, along with whatever libraries are needed. If such a centralized service did exist that service could maybe, as part of their cut of the profits, handle building the binaries and doing some testing for the various types of Linux systems out there.

Alternately, maybe you should try to figure out what Greenhouse is doing. They are selling Linux games for money, now. (Although they don't offer Linux versions of all their games, and I don't know what they do about the compatibility problem.)
Logged

My projects:<br />Games: Jumpman Retro-futuristic platforming iJumpman iPhone version Drumcircle PC+smartphone music toy<br />More: RUN HELLO
Eclipse
Level 10
*****


0xDEADC0DE


View Profile WWW
« Reply #3 on: July 25, 2009, 05:31:04 PM »

oh also that was one of the funniest thing i've ever read on the argument

http://braid-game.com/news/?p=364

(mostly because the giant flame on the comments of course)
Logged

<Powergloved_Andy> I once fapped to Dora the Explorer
Craig Stern
Level 10
*****


I'm not actually all that stern.


View Profile WWW
« Reply #4 on: July 25, 2009, 06:30:22 PM »


Good grief. Would it kill him to be polite to the people who are trying to help him?
Logged

undertech
Guest
« Reply #5 on: July 25, 2009, 08:26:46 PM »


Good grief. Would it kill him to be polite to the people who are trying to help him?

He's got an image to uphold!
Logged
MikeDee
Level 1
*



View Profile
« Reply #6 on: July 27, 2009, 10:46:05 AM »

mcc: The compatibility problem isn't that much of issue actually. If you look at Grubby Games for example, they have a single build for every Linux distro.
Personally I found porting games to Linux rather easy once you manage to run a SDL (or whatever API/library you're using) application successfully.
I took some time because I was new to Linux and it took me a while to figure out how to install SDL and the other SDL libs, and get a IDE to compile correctly but after that it was only a matter of porting the code and assets to Linux which is straightforward.

Eclipse:"SDL is only good for mini-games and stuff, not for my game" From someone who is struggling to have audio working on Linux, that retarded statement doesn't surprise me much.
I'm starting to suspect the guy made Braid using game maker or something.
Logged
nihilocrat
Level 10
*****


Full of stars.


View Profile WWW
« Reply #7 on: July 29, 2009, 06:59:24 PM »

People use analogies like "gold rush" and "wild west" or "frontier" to describe markets that are untapped. I'm going to figure that the Linux games market is kind of like a vast expanse of tundra. It's humongous (Linux is everywhere), but indigenous peoples (sysadmins, other IT professionals, academics) kind of mind their own business and aren't breaking down our doors for Linux games. You can't plant shit in the ground because of the permafrost, so you quickly understand why no one is grabbing land and starting a farm.

Now, if it's a multiplayer game, there is a humongous incentive to have a Linux port of the server. As other people in this thread say, there are many mature libraries that are both open source and work on Linux, so it's normally not much of a big deal to port to Linux. I actully think Linux is a better dev platform because of the packaging systems and GCC toolchain, compiling dependencies and such is really easy. If you are concerned about players having the right versions of all the libs your game depends on, just take a cue from Windows games and pack in your own versions of the libraries.

I was formerly an open source acolyte (not quite a zealot) so I think this gives me the right, "because the Internet", to suspect that Blow's brain has been irreversibly damaged by working with Microsoft APIs.

There are many open source games for Linux, but for some reason they release the binaries for the other platforms and leave the Linux with the source only, which for a non-developer is totally useless.

If the source comes with a configure script and/or Makefile, this is not true. All the user has to do is './configure && make && make install' and everything is done, provided they have downloaded the correct -dev or -devel packages for the libraries used in the game. You can now quote me and my "non-developer friendly solution" to prove that Linux will never be ready for the desktop Durr...?.
« Last Edit: July 29, 2009, 07:03:22 PM by nihilocrat » Logged

mjau
Level 3
***



View Profile
« Reply #8 on: July 31, 2009, 05:12:34 AM »

Making portable Linux executables that Just Work everywhere (x86/64) is definitely possible.  I've got games I compiled in 2005 that still runs fine on my up-to-date Linux box with a completely different distro (just tested Smiley).

First, about libraries -- this really isn't any different than the situation in Windows, so I don't know why people make such a fuss about this part.  You don't expect everyone to have SDL installed in Windows, so you ship the .dll with the game.  Same with Linux.  Actually, even with common stuff (like SDL is, on Linux), you should include the .so, since some versions are buggy and distros like to break stuff in a multitude of ways.  Rule of thumb:  If it's not GLIBC or X11, include it.  (There's a few gotchas though, eg with, again, SDL: make sure you've got support for all the various audio APIs included.  Dynamic run-time support, so that the support is optional, and not required.)

To make Linux automatically use your included libraries, you can set a special RPATH flag when linking the executable, with the library path relative to the location of the executable.  Eg if the executable will end up in ".", and the libs are in a subdirectory "lib", you link with '-Wl,-rpath,$ORIGIN/lib'.  (Remember to protect that $ from the shell, and make, if you use that.  Check that you got it right with objdump -x my-exe | grep RPATH, and ldd should also pick up the right lib).  Or, if you don't like RPATH for some reason (it does actually have a bug if the executable's path has colons in it, though that's very uncommon and will hopefully get fixed soon), you can use a wrapper that sets LD_LIBRARY_PATH before launching the exectuable.  It works like PATH, but for libraries.

To check direct dependencies so you know what to include, you can use objdump again: objdump -x my-exe | grep NEEDED

Note that that only lists direct load-time dependencies.  dlopen'd libraries won't get listed since the linker doesn't know about them (I once got burned by this with SDL_mixer dlopening libvorbis), and dependencies of dependencies won't get listed either.  (You get the latter with ldd.)

As for binary compatibility, once you dynamically link everything the biggest issue here is GLIBC (and this is not just for the executable, but goes for the libraries as well.  This is where the nightmare starts).  First, you should never ship glibc with your game because that's actually less compatible.  However, glibc uses versioned symbols, so you can't just link to it the normal way when compiling, or your game will most likely require at least the version of glibc you've got on your dev box .. which isn't a problem if it's old, but it's probably not, and if you're like me you'd like people with somewhat older distros to be able to run your game too.

The obvious solution to this problem is to just link against an older glibc.  This isn't always possible though, specially if you want to use more a more recent gcc.

Anyway, glibc still has all the older symbol versions included (or else older executables wouldn't work), so all you've got to do is to tell gcc to use these older symbol versions in stead of the most recent ones when compiling.  This is unfortunately not entirely straightforward, but it's made a little bit easier with this script I made ages ago:  gensymoverride.  First you use that to generate a header that defines which symbols that can be used and which can't (just run it for usage info).  Then once you've got that, you force-include it with everything you compile, like this:

gcc -include generated-overrides.h ...

It's easiest to just make a wrapper script to do this for you.  I've actually got a gentoo chroot where I made a gcc profile to do this automatically for gcc, g++, etc.  Gentoo because it's already got a system to compile everything, and chroot because it means I don't have to worry about this kind of thing at all once it's set up.  If it's compiled in there, it'll work.  Setting it up is a bit of a pain though.

If your game is C++, you should probably include libstdc++.so with your game as well.  An alternative (but only if you're not linking dynamically to any libraries that also use c++ dynamically) is to statically link libstdc++, which is smaller overall since you only get the parts you actually use.  Linking that statically requires some trickery though:

g++ -Wl,--as-needed <your-stuff-here> `g++ -print-file-name=libstdc++.a`

(-Wl,--as-needed isn't technically required, but some things depend on libstdc++ despite not actually using anything from it.  as-needed makes the executable only depend on actual, used libraries.)

libgcc_s.so.1 used to be a problem with c++ stuff btw, since it got introduced with gcc 3, and it can't be included with your game (doing that is actually guaranteed to prevent it from running at all).  Gcc 3 is ancient by now though, so this probably shouldn't be a problem anymore..  If it still bothers you though, you can link it statically with by passing -static-libgcc when linking.  This doesn't work if you link libstdc++ dynamically though, so you'll also have to link libstdc++ statically for this.
Logged
SidM
Level 1
*



View Profile
« Reply #9 on: July 31, 2009, 06:16:21 AM »

I think that in order for games to be viable on Linux you'll need something like a Steam-like service that is capable of scoping out your system and giving you a binary tailor-made to it, along with whatever libraries are needed. If such a centralized service did exist that service could maybe, as part of their cut of the profits, handle building the binaries and doing some testing for the various types of Linux systems out there.

Afaik, there is http://www.playdeb.net/ for Ubuntu gamers.
Logged
ஒழுக்கின்மை (Paul Eres)
Level 10
*****


Also known as रिंकू.


View Profile WWW
« Reply #10 on: July 31, 2009, 07:50:27 AM »

There are many open source games for Linux, but for some reason they release the binaries for the other platforms and leave the Linux with the source only, which for a non-developer is totally useless.

If the source comes with a configure script and/or Makefile, this is not true. All the user has to do is './configure && make && make install' and everything is done, provided they have downloaded the correct -dev or -devel packages for the libraries used in the game. You can now quote me and my "non-developer friendly solution" to prove that Linux will never be ready for the desktop Durr...?.

do you really think people who aren't techies are capable of doing that? i may be, and you may be, but most people who play and buy games are not.
Logged

Movius
Guest
« Reply #11 on: July 31, 2009, 09:13:27 AM »

Makefiles will instantly screw up anything you do. Their mere existance conjures mystical runtime anomalies out of the celestial cyber-ether.
Logged
Alex May
...is probably drunk right now.
Level 10
*


hen hao wan


View Profile WWW
« Reply #12 on: July 31, 2009, 09:22:04 AM »

True facts. Makefiles are responsible for 23.48% of the bugs in my software, and I don't even use makefiles.
Logged

leaf
Level 0
**


View Profile
« Reply #13 on: August 13, 2009, 06:04:27 PM »

How do you compile a large number of files if you don't use a makefiles?
Logged
team_q
Level 10
*****


Divide by everything is fine and nothing is wrong.


View Profile WWW
« Reply #14 on: August 13, 2009, 07:46:47 PM »

Quote
Have you seen someone step into a vertex shader in Visual Studio? These things stomp on the Linux environment’s face, with steel-toed boots, that are covered in spikes everywhere, where those spikes are made of depleted uranium
Thats kinda funny.
Logged

Dirty Rectangles

_PRINCE OF ARCADE_
Pages: [1]
Print
Jump to:  

Theme orange-lt created by panic