Temple of The Roguelike Forums
Development => Programming => Topic started by: ido on May 07, 2010, 11:15:46 AM
-
Hi,
we've recently had a discussion about cross-platform support (or lack-thereof) in another thread (http://www.roguetemple.com/forums/index.php?topic=851.msg7193#msg7193).
It seems like a lot of recent roguelikes are windows only, despite the abundance of cross platform libraries and it seems a lot of it is because of devs thinking that the amount of potential players who are not on windows is negligible and that it's not worth the effort to support them.
In addition to the data about visitors to my homepage (which is safe to assume are mostly roguelike players) I've presented in that post (70% windows, 15% Mac, 15% Linux) I've recently come across some stats on buyers of the The Humble Indie Bundle (http://www.wolfire.com/humble).
As you can see about half of the buyers are windows users with the rest dividing approximately evenly between mac & linux.
More surprisingly, linux buyers chose to pay a higher price than mac buyers (who in turn payed more than windows buyers)!
Discuss.
-
Well, I can not discuss, only confirm.
If I have a look at LambdaRogue downloads (1.5 only, without patch and source downloads):
Total: 1899
Windows: 1585 (83,46%)
Linux: 314 (16,54%)
Although Linux is a clear minority, I will always support it, because
1. I started LR development on Linux
2. I need a roguelike for Linux that fits my expectations
3. Cross-platform development is very easy with FreePascal.
4. The number of both Linux and Windows downloads are still increasing.
-
I wonder how many more players you'll be able to get with a mac version - extrapolating from the data we have it should be about the same as the number of linux players.
A quick calculation would put the estimate at:
2213 total
1585 (71.6%) windows
314 (14.2%) mac
314 (14.2%) linux
That would make your user-base distribution practically the same as mine (70-15-15).
-
I would say, as somebody unqualified to speak on technical matters, that it is in fact largely a technical matter hinging on happenstance. That is to say, it just so happens that many of the projects appearing lately are built with Not-So-Crossplatform Thing X, which happens to be what the developers knew how to be effective in for whatever reason---possibly work otherwise.
On the business side of it, as you mention, it tends to be a fact that most indie developers come to realize sooner or later---that you need to cast as wide and well wrought a net as possible given how much is out there. This is why the ambitious sequel for Knights of the Chalice is having to pretty well be utterly rewritten using SFML---some interested parties simply couldn't get the original to work/support made much trickier and there's only so much one can do once a game is far enough along and this just wasn't anticipated as an issue else I suspect it would've been in SFML or some such in the first place.
As to how to change this, the best solution I could think of would be some prominent guides based around developing a Roguelike with a Multi-Platform core FROM THE ONSET across the various engines/languages/etc that excel at this and maybe some that don't without some special sauce added to the mix(I'd guess Mac issues would complicate things, but still). So long as people would know/think to check for such a resource to alleviate as much of the mystery/legwork as possible while the game was early in the dev cycle, there should ultimately be an increase in the amount of projects that don't have this issue.
-
I think a lot of developers decide they would rather have a 70% user base on a project they can cope with than a 100% user base of a project that drives them nuts.
Roguelikes tend to attract dabblers (like me), who may have limited computer language skills, limited knowledge of non-Windows systems and could be looking for any short-cuts they can find. I mostly played around with existing code-bases (of *band games) and when I wanted to make changes that pushed the limits of what's do-able (like multi-language support) I quickly found that there were handy functions, libraries and development suites that were available for Windows but often not for Linux. It was a pain even getting a Linux system set up alongside Windows on my (only) computer - never mind working out how to compile stuff. And I don't have access to a Mac.
-
For my java projects it seems to be about 5-6% of Mac users. I don't know if this is a representative number. Could most likely be more, but I know so little about MacOS, so I cannot take a lot of precautions for my projects to run well there. Usually I just hope Java will be portable enough to work - now and then I get told of some quirks, so far I could solve all of them I think.
-
My current roguelike is not portable. For my defence :
1. I chose a language (C#) and a platform (Win32, DirectX) I'm comfortable and efficient enough with, and on which I know I can implement every feature I have in mind.
2. It's not commercial so market size isn't vital.
3. If I made it cross-platform (let's say C+libs, Java), since I have only access to Win32 I would have to rely on users feedback for error reports and mostly do random-guessing for cross-platform bugfixes.
4. In the same vein, the less portable third-party libraries (libtcod, SFML, SDL...) the more control I have and I don't "loose" time learning a new API and annoying the library devs with silly questions ;D I don't mind having to code by myself roguelike basic algorithms and graphics primitives, it's part of the fun and I learn how to do it better for the next project.
Mmh.
Thinking more about it, if I was going commercial I would seriously consider doing it cross-platform. So the most important reason is 2 and I would have done it in Java.
-
Java is pretty much cross-platform off the bat, especially if you don't use native libs like LWJGL or JOGL.
-
I find this interesting/amusing:
I will always support [Linux], because [...] 2. I need a roguelike for Linux that fits my expectations
as an example of the whole myth or idea that "free developers code for themselves, to scratch their own itch". I personally use only Linux, so I always find it annoying with seemingly interesting games that run only on Windows. (Elona, Spelunky and Triangle Wizard springs to mind.) Mac users obviously feel the same way. What every individual ends up using, depends on a lot of factors. There are exotic pieces of hardware and software out there.
Whenever it comes to publishing any kind of computer program, I personally feel that it's really sensible to try to make it as accessible as possible to anyone who might have an interest, in the technical terms of which tools I use to develop and publish. For me, this rings especially true with RLs, since we're such a small community in the first place (and probably more than averagely quirky when it comes to computers). Your mileage may vary.
My own project is currently available as either Windows binaries (yawn) or Python source (easy on Linux, but you need third party downloads on Mac). This is ironic, since my main computer is actually a Mac. I used to dualboot MacOS and Linux, but after a while I felt like MacOS was just taking up space, since I already knew and liked Linux. But for a more official release, I intend to make sure that there are downloads of the source, as well and binary releases for Windows, OSX and Linux. The Linux binary will be a *.deb (sorry *.rpm-geeks), and just because it would amuse me to build the package. It will be interesting to see how many (if any) download the *.deb. (But I would guess that being your own downstream developer into Debian itself would earn you a lot of downloads as a RL developer ;) )
[...]
getter77 is showing magnificent charisma and wisdom, as always :)
I don't mind having to code by myself roguelike basic algorithms and graphics primitives, it's part of the fun and I learn how to do it better for the next project.
I wholeheartedly agree to this, but for me it's rather been an argument to make the project more cross-platform ;) . I have a very limited understanding of computers from the outset, so I've basically learned/am learning how to program from making a RL. For me, it was "part of the fun" to use more or less cross-platform tool from the outset. But as said, all that differs from person to person. I just happened to fall across Python in a timely manner, but the fact that it is a scripting language was part of what made it shine at the time. Today I might have chosen Java, I think ...
Sorry for ranting ...
As always,
Minotauros
-
I wonder how many more players you'll be able to get with a mac version
We'll probably find out in summer or autumn 2010. I'll plan to get a Mac in June or July, and I already figured out how to compile LambdaRogue on a Mac. It's really easy, because the game only uses SDL and doesn't rely on OS dependent things.
The Lazarus book I bought some days ago also has some good chapters on FreePascal Mac development.
as an example of the whole myth or idea that "free developers code for themselves, to scratch their own itch"
Well, yeah. :-D Although there are lots of roguelikes I really like, none of them offers me exactly the kind of game I want to play. Of course, this is true for Windows, too.
-
When I started development of Wizard's Quest I had Linix at work and Windows at home.
So I actually didn't have other choice, but to make it crossplatform.
Later I moved to mac on work, and added mac os x to the list of supported platform...
Simple as this...
Right now I'm trying to find good high level cross platform library
for (2d) game development.
I thought that choice is much better with this kind of libraries.
Right now I'm trying to play with LÖVE 2d.
-
because of devs thinking that the amount of potential players who are not on windows is negligible and that it's not worth the effort to support them.
I don't know who really thinks like that. I as developer think that it could be nice to support all possible platforms, but the real problem is that I have only Windows installed in my computer. I don't have Linux or Mac, which makes cross-platform development quite hard. I don't want to install Linux, because it's a complicated OS. I don't have time for that shit. And Macs are too expensive anyway.
-
I agree with Krice, it is usually impossible or extremely difficult to develop for OS you don't have.
-
Not that hard to install an OS on vmware or virtualbox, I do it with windows to provide windows builds.
Ubuntu's installation process is about as easy as windows' (and unlike windows, it is free), maybe easier - shouldn't take you more than an afternoon of working at a fairly leisurely pace to set it up.
If anything the real problem is using platfrom-dependent libs such as XNA and DirectX.
-
If anything the real problem is using platfrom-dependent libs such as XNA and DirectX.
I'm going to release the source code of Teemu v1.1 when it's done. It's interesting to see how portable it is, because it's using standard C/C++ and only SDL as external library. There was that problem with Stile (sprite editor) in Linux as class Screen was already a part of some obscure internal Linux library. It sounds like non-standard way, because in empty project there should not be anything colliding with names of the source code.
-
Yes as long as you do not willfully make your code unportable by using bad libs (win32/directx mainly) you are fine, even if you cannot support it yourself, if your game is good people will help you. (And if it's bad you have other problems anyway ;> )
I'll take that occasion to do a shameless advertising for T-Engine4 (http://te4.org), you make a game with I while I care about the cross platform compat :)
-
bad libs (win32/directx mainly)
"Bad"? Really? The DirectX libraries are vastly easier to use and often result in considerably more productive development--the time you spend reinventing the wheel using an Open?L solution is then spent actually doing what you want to do (and SDL/SFML are poor substitutes on their best day). The Sharplike team sorta-kinda cares about cross-platform capability (which is why we're using OpenTK), but I know that I personally would be a hell of a lot happier taking the DirectX route because it is considerably simpler to work with and use.
Our look on cross-platform development is "if it doesn't work on Mac/Linux, file a bug and we'll look into it when we can." It is not on my personal radar at all.
-
"Bad"? Really? The DirectX libraries are vastly easier to use and often result in considerably more productive development--the time you spend reinventing the wheel using an Open?L solution is then spent actually doing what you want to do (and SDL/SFML are poor substitutes on their best day).
since we are talking about portability, yes, DirectX = FAIL. Its not portable.
Please tell me which of the following devices DirectX works on, since its oh so superior.
GP32, GP2X, Wiz, Dingoo, PSP, PS2, Pandora, Zodiac, Amiga, Mac, SGI box, sparc boxes, alpha boxes. None. SDL at least works on all, but its a bit unfair to compare DirectX to SDL. SDL is about giving you a video framebuffer to futz about with, its nothing to do with 3D ala DirectX.
I think its funny you piss on OpenGL yet one of sharplikes bullet points is "OpenGL audio and video system, using OpenTK."
I guess it will be interesting to see how long it takes (1, 2, 4 more releases?) before the mono side of things is abandoned in sharplike.
-
I think there is no reason to be snarky.
EdR has a legitimate opinion that directx is easier for him to use and it's his decision to make, even tho I'd prefer more people to use platform independent libs since I personally use mac os x and ubuntu at home (and normally don't play roguelikes at work, where I use windows).
Also, I personally don't bother supporting all of the platforms you've mentioned either, I'm ok with windows/mac/linux and hoping the source code compiles for any other unix out there.
But if someone on an amiga has problems getting it to work I would honestly not invest a huge amount of effort trying to support it.
-
PS: "easier" often depends on subjective things such as familiarity and experience, but either way I'd personally prefer to use higher level libs that abstract opengl/directx away.
-
In the past, platforms were changing more often and more drastic, so portability was an issue - at least for me, when I wanted to move from my Amiga to a DOS based PC, and the question was how to get my programs run under DOS/Windows again.
Nowadays 90% of people can run Windows programs, and they could for like 10 years, and it seems very likely that they can for another 10, so portability is not that much of an issue anymore.
It became even so little of an issue that many people understand portable software as "something I can carry with me on an USB stick" instead of "Code that can be ported easily from one system to another".
DirectX is a heavy lock to the windows platform though. Can be, but doesn't have to be a problem. It depends. Personally, I think supporting multiple platforms is a good idea, though.
If Java dies some day, I'll have lost a lot of work, too ... unless there are cross-compilers and such tools which will help me to rescue my code.
-
Nowadays 90% of people can run Windows programs, and they could for like 10 years, and it seems very likely that they can for another 10, so portability is not that much of an issue anymore.
That's basically a spit in the face to every mac and linux developer that invests an effort into supporting windows (which is often a lot harder to support than linux, mac or any unix).
It's one thing to say you don't think it's worth expanding the effort to support 30% of your user base (see previous posts about that figure) and a whole other thing to state that portability is not that much of an issue.
Macs and linux today have a much higher market-share than amigas ever had, the only difference is that now it's someone else's problem because it's not you that is on the non-mainstream platfrom.
Amigas were only really popular in a couple of european markets, I've never even seen one until a few years ago. World-wide it was never more popular than contemporary macs.
-
Nowadays 90% of people can run Windows programs, and they could for like 10 years, and it seems very likely that they can for another 10, so portability is not that much of an issue anymore.
That's basically a spit in the face to every mac and linux developer that invests an effort into supporting windows (which is often a lot harder to support than linux, mac or any unix).
I'm not sure why my posting is felt to be offending. Statistics say that more than 90% of PC users have windows installed, and even more have access to windows. I just repeated that. It's not my opinion and not my invention.
Source: http://en.wikipedia.org/wiki/Windows
As of October 2009, Windows had approximately 91% of the market share of the client operating systems for usage on the Internet.
My "10 year estimate" can easily be wrong, I don't see why it would be offending though, either. It's a common way to extrapolate things though, to look at the past and then assume some kind of linear development (I know that many of such prospects fail, still I think is is a valid way of doing extrapolations).
So I think it is allowed to say that the pressure on writing portable software has dropped, since a reach of 90% is good enough for many developers.
Mind you, I'm still pro portable software, and almost everything I made was/is available on several platforms, except minor projects or very old projects. At least after the experience of loosing a lot of my work in the transition from Amiga to DOS/Windows, which happend in 1993 or so, and is therefore really not relevant anymore, but for my own memories. I don't understand why you compare Amiga popularity with Macs now, since I only shared a personal experience of loosing work by not having cared enough about portability of my software. It was more or less meant as a warning for other developers that they might share this fate if they are not careful, but the rest of my message wanted to say that such fate is less likely these days.
-
I'm not sure why my posting is felt to be offending. Statistics say that more than 90% of PC users have windows installed, and even more have access to windows. I just repeated that. It's not my opinion and not my invention.
Source: http://en.wikipedia.org/wiki/Windows
As of October 2009, Windows had approximately 91% of the market share of the client operating systems for usage on the Internet.
That is pretty much the topic of this thread (http://www.roguetemple.com/forums/index.php?topic=881.msg7341#msg7341). If we are talking about RLs your target audience is likely to be far less than 91% windows (I argue it is closer to 70%).
About the Amiga part - it bothered me because I read it as "it used to be important because it affected me, but since now it's just other people's problem feel free to ignore it".
-
don't understand why you compare Amiga popularity with Macs now,
con·tem·po·rar·y
/kənˈtɛmpəˌrɛri/ Show Spelled [kuhn-tem-puh-rer-ee] Show IPA adjective, noun, plural -rar·ies.
–adjective
1.
existing, occurring, or living at the same time; belonging to the same time: Newton's discovery of the calculus was contemporary with that of Leibniz.
2.
of about the same age or date: a Georgian table with a contemporary wig stand.
3.
of the present time; modern: a lecture on the contemporary novel.
I was using it with the intention of the first definition. I.e. at their heyday Amigas were still less popular than macs of that time (but additionally also less popular than macs are today).
But that's not the important part of the argument.
-
Obviously I said something bad, without intention though. I'm sorry if I have offended people.
-
Don't worry too much about it...It's just a sensitive subject.
Anyway my problem is not with your tone but with your assumptions about the RL-players' "market-space", which I think is incorrect.
I also think your perspective is somewhat skewed, seeming to be that in the late 80s and early 90s alternative platforms roamed the earth while now it's practically all Windows:
So I think it is allowed to say that the pressure on writing portable software has dropped, since a reach of 90% is good enough for many developers.
I'm pretty sure that DOS by the early 90s had as high a market share as Windows does today. Some European counties (notably the Germanic and Nordic countries) are the exception here. I am not pointing that in anger, I'm rather just trying to inform.
-
Anyway my problem is not with your tone but with your assumptions about the RL-players' "market-space", which I think is incorrect.
Agreed. I didn't think in "RL market space", but more or less reach of computer programs in general. I just saw that further above I had told that I have about 5% of Mac users for my Java projects, which are not RL projects ... so my statistics and scope just differed from yours.
So yes, for RL development your numbers might be more correct.
-
On my generic not RL sites I get 90% windows users and on my RL sites 75%, seems to correlate well with what others said :=)
-
The crawl survey (http://crawl.develz.org/wordpress/wp-content/uploads/2010/02/survey_results.txt) from late 2009 is a bit harder to compare, but seem to also support a similar conclusion:
52.0% 130 windows
18.0% 45 linux, windows
13.2% 33 linux
5.6% 14 osx
4.8% 12 osx, windows
2.8% 7 linux, osx
2.0% 5 linux, osx, windows
1.6% 4 other
If we divide the multiple-os choices equally we get:
52+18/2+4.8/2 +2/3 = 64% windows
18/2+13.2+2.8/2+2/3 = 24% linux
5.6+4.8/2+2.8/2+2/3= 10% mac os x
Also not far from my 70/15/15.
-
The nethack poll (http://nethack-de.sourceforge.net/nethack_poll_results.txt) seems less windows-heavy, but even harder to compare with than the crawl survey-
e.g. putty is a windows program & I am guessing most people who answered DOS are playing it in a DOS prompt on windows and not actually on a PC running just DOS:
5. OS and Devices
------------------
By OS family:
283 44.08% Windows
169 26.32% Linux
63 9.81% Mac OS X
23 3.58% PuTTY
22 3.43% iPhone OS
18 2.80% NAO
12 1.87% Unix
10 1.56% DOS
10 1.56% Nintendo DS
9 1.40% BSD
4 0.62% Android
3 0.47% Psion Series 5mx
3 0.47% AmigaOS
2 0.31% Telnet
2 0.31% Sony PSP
2 0.31% Maemo
2 0.31% OS/2
5 0.78% others: Acorn Archimedes, BeOS, GP2x, Gamecube, Nintendo Wii
-
If someone can find recent stats for Angband and ADOM (both of these work on win/linux/mac) that could be quite helpful, as we will then have all the major RLs covered.
-
I would say that support of multiple platforms should really be left to the developers to decide if it suits their aims, since the majority of roguelikes are hobbyist projects and most of them are offered for free. If it's something you do for your own satisfaction, and no one is paying for it, it's not like you owe anything to anyone.
-
As a developer I do like as many people as possible to be able to play my games, but ultimately it does come down to a matter of how much demand there is for it.
I must say though, the portables market is rising rapidly, and very few of them use anything Windows-esque. I think there could be a lot of scope for portable coffeebreak roguelikes in future. However with many devices the whole control system is best specialised for that unit anyway...
-
Actually, has anyone with a Linux or Mac box tried out mono? I'm curious how effectively C# roguelikes actually work on it, just as I'm curious how well regular Windows roguelikes would work with wine. Given that almost all of my time (both recreational and developmental) is spent on a Windows machine I'm curious how well someone who wanted to play a Windows roguelike could do so on a non-Windows machine.
Any thoughts? (Aside from just saying "use java")
-
Actually, has anyone with a Linux or Mac box tried out mono? I'm curious how effectively C# roguelikes actually work on it
It kinda work sometimes. Mostly doesn't.
, just as I'm curious how well regular Windows roguelikes would work with wine.
Hit or miss, really. Some stuff works really well (mostly high visibility commercial games that wine's developers were targeting) but a lot of stuff doesn't work at all or works poorly.
-
That's basically a spit in the face to every mac and linux developer that invests an effort into supporting windows (which is often a lot harder to support than linux, mac or any unix).
Why Windows would be harder to support? The comments I got from Teemu's source code revealed that there were differences even in different distributions of Linux. That doesn't actually make it easier to write portable source code. I think it was interesting to see that Linux wouldn't accept source code compiled in gcc for Windows even the source code was pretty much 100% standard C++. So, you can't always blame Windows.
-
That was just my personal experience.
I wrote the code for linux and porting to mac os x basically only required recompiling (and vice versa when I started using os x as my main os and porting to linux), where as windows required a bunch of #ifdef's to work properly.
That might very well be SDL's (or gcc's) fault tho.
-
Mac OS X is very much Unix inside. Thus more similar to Linux than Windows would be.
-
Mac OS X is very much Unix inside. Thus more similar to Linux than Windows would be.
Yep.
The thing is, pretty much every OS you are likely to come across these days (except for Windows) is to a varying degree a *NIX: linux, os x, *bsd, solaris, iPhone os, android, etc..
-
On one hand we see a convergence of OSes towards *nix based systems, on the other hand there are now tries to bring new CPU types to consumer systems, like ARM based netbooks and smartphones.
I think it's a good thing to see more diversity in the CPU types again.
-
True, although various ARM chips have likely powered your 'dumbphones', home appliances & cars for the past 2 decades, (not to mention industrial uses) ;)
AFAIK it's the most widely used cpu architecture (more than x86) and has been for a while.
-
I think its funny you piss on OpenGL yet one of sharplikes bullet points is "OpenGL audio and video system, using OpenTK."
This is like people screaming at Linux Hater because Blogspot's powered by Linux--it misses the point entirely.
OpenGL sucks, so I say so. That it is the only option for exactly what we want does not make it suck less--it makes it suck more, in a way, because there's no other option. I actively resent using OpenGL. Not because it's "open" or because it's "cross-platform," but because the API is absolutely Neolithic and it's an absolute shitshow to work with. Fortunately, one of our developers actually likes OpenGL and handles that so I don't have to.
On the other hand, I can just get things done in DirectX, and not really have to care about how it's done. Oh no, I can't target the almighty GAMEPARK 2X, but I can target the people who I actually care about.
I guess it will be interesting to see how long it takes (1, 2, 4 more releases?) before the mono side of things is abandoned in sharplike.
"Support" for Mono is if-and-when as it is; it exists because one of our devs has a Linux laptop. I personally could not care less, except in that I'm friends with a number of Mono developers and wouldn't want to bail on them when their project hasn't given me a reason to.
-
OpenGL sucks, so I say so. That it is the only option for exactly what we want does not make it suck less--it makes it suck more, in a way, because there's no other option. I actively resent using OpenGL. Not because it's "open" or because it's "cross-platform," but because the API is absolutely Neolithic and it's an absolute shitshow to work with.
Maybe I'm as neolithic as OpenGL, but when I tried to learn OpenGL I managed to have a simple 3D world up in about 2 days. The API was fairly easy to understand and lots of example code on the net helped to get started quickly.
I'm under the impression that usually OpenGL drivers are a bit behind, compared to the features of DirectX, but for my needs the included features were more than good enough.
There are engines like Ogre and Irrlicht, which should hide the underlying API and can work in a cross platform manner. maybe it is better to use such than to deal with the native graphics API directly, like we use SDL/Allegro to hide the underlying 2D API, and a have a cross platform graphics API?
-
There are engines like Ogre and Irrlicht, which should hide the underlying API and can work in a cross platform manner. maybe it is better to use such than to deal with the native graphics API directly, like we use SDL/Allegro to hide the underlying 2D API, and a have a cross platform graphics API?
More importantly, they are also higher level than opengl and directx and therefor easier to use.