14 ms·
Why do game developers prefer Windows?
- jblow 14y agoBeing a very experienced game developer who tried to switch to Linux, I have posted about this before (and gotten flamed heavily by reactionary Linux people). The main reason is that debugging is terrible on Linux. gdb is just bad to use, and all these IDEs that try to interface with gdb to "improve" it do it badly (mainly because gdb itself is not good at being interfaced with). Someone needs to nuke this site from orbit and build a new debugger from scratch, and provide a library-style API that IDEs can use to inspect executables in rich and subtle ways. Productivity is crucial. If the lack of a reasonable debugging environment costs me even 5% of my productivity, that is too much, because games take so much work to make. At the end of a project, I just don't have 5% effort left any more. It requires everything. (But the current Linux situation is way more than a 5% productivity drain. I don't know exactly what it is, but if I were to guess, I would say it is something like 20%.) That said, Windows / Visual Studio is, itself, not particularly great. There are lots of problems, and if someone who really understood what large-program developers really care about were to step in and develop a new system on Linux, it could be really appealing. But the problem is that this is largely about (a) user experience, and (b) getting a large number of serious technical details bang-on correct, both of which are weak spots of the open-source community. Secondary reasons are all the flakiness and instability of the operating system generally. Every time I try to install a popular, supposedly-stable Linux distribution (e.g. an Ubuntu long-term support distro), I have basic problems with wifi, or audio, or whatever. Audio on Linux is terrible (!!!!!!), but is very important for games. I need my network to work, always. etc, etc. On Windows these things are not a problem. OpenGL / Direct3D used to be an issue, but now this is sort of a red herring, and I think the answers in the linked thread about graphics APIs are mostly a diversion. If you are doing a modern game engine and want to launch on Windows, Mac, iOS, and next-generation consoles, you are going to be implementing both Direct3D and OpenGL, most likely. So it wouldn't be too big a deal to develop primarily on an OpenGL-based platform, if that platform were conducive to game development in other ways. I would be very happy to switch to an open-source operating system. I really dislike what Microsoft does, especially what they are doing now with Windows 8. But today, the cost of switching to Linux is too high. I have a lot of things to do with the number of years of life I have remaining, and I can't afford to cut 20% off the number of years in my life.
- edsrzf 14y ago> Someone needs to nuke this site from orbit and build a new debugger from scratch, and provide an library-style API that IDEs can use to inspect executables in rich and subtle ways. LLDB[1] can do this, but I'm not sure how far along it is. [1] http://lldb.llvm.org/ http://lldb.llvm.org/
- to3m 14y agoJudging by the version that's in Xcode, lldb is not ready yet. The command syntax is a bit inconvenient compared to gdb. Perhaps I should overlook that, because it's presumably designed to be the lowest level of the debugger, so you interact with a GUI or something rather than with lldb directly, but Xcode's expression window is such utter unreliable junk that I end up having to use lldb by hand all the time anyway. I've had problems with variable substitution. You can (say) ask it the value of $rip to find out what the value of the RIP register is, but if you try to set a breakpoint at $rip, it doesn't know what $rip is. I've had problems with lldb telling me that a struct is forward-declared, even though I'm trying to print a local value of that struct type. Sometimes lldb just gets confused, as in this exchange, which I reproduce verbatim, just as it happened: (lldb) p this (const CustomTrafficStyle *) $2 = 0x200cf4e0 (lldb) p *this error: invalid use of 'this' outside of a nonstatic member function error: 1 errors parsing expression lldb doesn't have gdb's @ operator for printing arrays; instead, there's this separate command for dumping memory. So instead of "p x[0]@100", you might do "me r -ff -c100 `x`" - which is obviously a big pain, because it's a lot more verbose. I don't even know offhand how you'd use an expression for the count argument either (more inconvenient syntax.) (Furthermore, I don't even believe the me command does exactly the same thing, because I don't think it prints structs, but it usually does the job just about well enough.) Finally, and most tiresomely, lldb will sometimes just print nonsense. So you might end up with something like this, which is all reasonable enough: (made-up example representative output, not a copy and paste) (lldb) p x (int *) $2 = 0x1234578 (lldb) p i (int) $3 = 100 (lldb) p x[100] (int) $4 = 123 (lldb) p &x[100] (int *) $5 = 0x12345998 But then... (lldb) p x[i] (int) $6 = 0 (lldb) p &x[i] (int *) $7 = 0xc4231777 Maddening. Absolutely maddening.
- ramayac 14y agoOne of the most entertaining/educational answers I've read on programmers SE. Fantastic!
- ComputerGuru 14y agoIt's a really stupid question (but this does not take away from the value of the incredible first answer). It makes a huge, blind assumption (running on Windows means using DirectX and explicitly not OpenGL) and ends up assuming correlation implies causation. There are many Windows-only games written in OpenGL, and the ones that are written with DirectX is not necessarily because DirectX is better but because there are more consumers for Windows. The short and simple answer is that "real," modern games are ridiculously expensive projects. The highest percentage of PC-gamers can be found (at the moment) on Windows. Ergo, you will write Windows games and use libraries (OpenGL, DirectX, or otherwise) that are available on that platform.
- phaus 14y agoIt was a dumb question, but if you scroll down, someone responded with an awesome history of the war between Direct X and openGL. I'm pretty sure that's why it was posted here.
- siamore 14y agoyour'e right, the top answer provides great insight. I was actually surprised it wasn't already posted here.
- blindhippo 14y agoI wouldn't say it's a stupid question. It's a broad question seeking a better understanding that most of us take for granted. And it clearly was treated as a good question by the absolutely astonishing answer it garnered. Humanity is better for this exchange on Stackoverflow - we need more discussions like this.
- chill1 14y ago"Humanity is better for this exchange on Stackoverflow - we need more discussions like this." Outstanding. Made me smile. I appreciate the level of grandeur you are attempting to bring to bear on this discussion, but this is a discussion about Game Development by the way.
- jpxxx 14y ago..and then another decade passed and OpenGL ES won every growth market, returning PC gaming to its niche status. Massive niche, of course, but niche. More Temple Run, dears?
- pjmlp 14y agoOnly on mobiles and we have to thank the iPhone for that. Before the iPhone there were only crappy 3D apis available, OpenGL done with software rendering,the J2ME 3D Mobile API and even the PocketPC had brain dead versions of DirectX. As for the game consoles, it is a myth in the FOSS that they use OpenGL. Except for the PS3, which has OpenGL ES + CG, most consoles not from Microsoft have an OpenGL like API, which is not the same thing. As for the PS3, most developers actually make use of the proprietary CGM API.
- bsimpson 14y agoBrowser-based 3d is all going to be WebGL, which is very OpenGL ES inspired.
- pjmlp 14y agoWith MS-DOS games quality, no thanks.
- Roybatty 14y agoI don't think browser-based gaming will ever take off. What's the point? IE will never incorporate WebGL, and with engines like Unity, you have cross platform development that surpasses anything that can be done in the browser anyway.
- shocks 14y agoBecause OpenGL is ugly as hell. DirectX is rewritten often (with new versions) to accommodate new ideas, whereas OpenGL new features/ideas are just "tacked" onto the existing code base. OpenGL also has a huge barrier to entry compared to DirectX. MSND DirectX resources are fantastic, whereas resources on OpenGL are often out-dated and generally pretty crap. DirectX requires the DirectX SDK, whereas OpenGL requires GLUT, or GLEW? I think. Perhaps FreeGLUT? OpenGLUT? Or can you just use SDL? Or none of them? What? Exactly.
- gte910h 14y agoI've heard this same sentiment from numerous programmers, including many who prefer Linux. I'm thinking this is probably an informed opinion, not an uninformed one, and should probably not be in the negative in votes.
- shocks 14y agoHi there, thanks! :) My opinion is based on my own experiences developing DirectX and OpenGL applications, as well as advice from my brother who is a games developer.
- BlackAura 14y agoFrankly, complaining that developing for Direct3D requires just the DirectX SDK, and that developing for OpenGL requires some combination of other libraries is a stupid complaint. It's the kind of complaint that only complete newbies might have - anyone with any idea about what they're doing will not have a problem with it. Not that it's hard, anyway. You don't need any actual libraries to use OpenGL. You just need up-to-date headers, and a way to link to the system's OpenGL library. The easiest way to get those is to use an extension loading library, which provides those headers, links to OpenGL at run-time (same thing that Direct3D does) and makes all of the available extensions available automatically. Complaining about libraries like GLUT, GLFW, or SDL is completely irrelevant. If you were using Direct3D, you'd be writing windowing code directly on top of the Win32 API, which you can still do with OpenGL. If you want to use one of these libraries to handle the platform-specific windowing and OpenGL setup, you can. You don't have to - even in portable games, you can still just write your own platform-specific windowing and OpenGL setup code. So the development setup and libraries are different. So what? It's fairly simple to work out for anyone but a complete beginner. On platforms like iOS or Mac OS X, OpenGL is actually trivial - everything you need is included in the platform's SDK. Same with Android. Same, to an extent, with Linux. OpenGL is only really awkward on Windows, and you can guess who's to blame for that. But there are plenty of legitimate complaints about OpenGL. The API is much more complex than Direct3D. There are dozens of ways to do things, with no way to tell which is the best way (short of looking at what Direct3D is doing, and copying that). Behaviour and performance is inconsistent between driver vendors, versions of driver from the same vendor, and across platforms. Some OpenGL drivers (Intel's on Windows, until very recently) are effectively unusable, or don't expose all of the hardware's functionality that Direct3D does. There are lots of legacy issues to carefully creep around, and they can still bite you even if you're not using the legacy features. The shader compilers aren't consistent between different vendors, and are often incredibly slow. Linking shaders is kind of clumsy. Since the API and drivers are much more complex, it's more common to run into severe performance issues caused by the driver than it is with Direct3D (and consoles are better than Direct3D in this regard, because their graphics drivers are so thin that they essentially don't exist). Even picking a decent subset of OpenGL to use is a pain. Do you use OpenGL 2.x and ignore large chunks of it to get a reasonable API, and broad support? Do you go for OpenGL 3.x or 4.x instead? Which version? Which set of extensions? It's dead easy for OpenGL ES, though - 1.x (fixed function) or 2.x (shaders), neither of which carry around the legacy crap that OpenGL still carries. Dealing with all of that is the problem with using OpenGL, not working out how to link to it. Oh, and documentation. That really is shocking, mostly because the majority of documentation or guidelines you might find are written for OpenGL 1.x, and are completely obsolete. There are some good beginner-level guides to getting started with modern OpenGL: http://www.arcsynthesis.org/gltut/ http://www.arcsynthesis.org/gltut/ (OpenGL 3.3) http://duriansoftware.com/joe/An-intro-to-modern-OpenGL.-Table-of-Contents.html http://duriansoftware.com/joe/An-intro-to-modern-OpenGL.-Tab... (OpenGL 2.0, not using the legacy stuff)
- Cushman 14y ago> Old John Carmack at Id Software took one look at that trash and said, "Screw that!" and decided to write towards another API: OpenGL. "Old John Carmack" makes me think he's some sort of half-myth crazy coot mountain man, which made me realize something: There will some day be mythology about computer programmers. Whoa.
- Turing_Machine 14y agoThere already is. Stories about Seymour Cray building (and then burning) a boat every year, tons of stories about Woz, tons of stories about rms, tons of stories about any number of the other greats, some true, some embellished, some made up from whole cloth.
- knome 14y agoIf you mean one day people will remember the names of programmers in a mythological manner, I doubt it. If you mean there will exist a mythos of programmers. Their persons. Their ideals. Their exploits. There are books: "Dealers of Lightening", "What the Dormouse Said", "Hackers: Heroes of the Computer Revolution"; and beyond them a large amount of information available only online ( textfiles.com is fantastic ). Things like 2600 and phrack. All of the old 'zine releases made by various cracking groups, like "Legion of Doom", where at this point all that remains are various communiques thanking lists of pseudonyms that will likely never be linked to actual names. Older stories, like Mel. The Woz's hacks and Gates' angry letter to early software copiers. The lexical analysis to pin n3td3v as Gobbles Security ( still unconfirmed afaik ). Some of the older bits by related groups, such as phreakers, aren't necessarily programming mythos, but fall into the same crowds and history folders, individuals like Captain Crunch. There are Torvalds and Tanenbaum's humorous exchanges. The first worm. utf8's placemat birth. Larry Wall's idiosyncrasies. Well, all programmers idiosyncrasies. esr. rms. dmr. ken. Anyone else that can be identified by a tla, plus or minus an underscore prefix. Hacker ethic, free software and open source manifestos, deconstructions, apologies, rebellions and dismissals aplenty. Hackers v crackers and demoscene's birth from the latter. Spacewar, nethack, rogue and a thousand MUDs to idle your time away. Many other things that haven't popped off the top of my head. There won't some day be a mythos such as this. It is here now. And it will only grow further.
- 14y ago
- bitL 14y agoMac has outdated OpenGL. Period.
- pjmlp 14y agoFull with Apple specific extensions.
- derpmaster 14y agoGames are already being ported to other operating systems because of microsoft greed. MS wants to copy everybody with an app and game store, which will be the only authorized way to download and install anything on to windows 8+ They also want to charge 30% to any vendor that wants to sell in their store. Since game makers like Steam have their own content delivery system which will be blocked by MS they already panicked and announced a new linux client and have claimed to be committed to switching everything over the next few years and dumping windows
- pjmlp 14y agoHow is this different from how consoles work? They are no short of games.
- AnthonyMouse 14y agoI don't think the console makers take a 30% cut.
- corysama 14y agoCloser to 15%. But, that's after the retailer takes half (including shelf space rental).
- AnthonyMouse 14y agoThe console game makers don't have any obvious way to cut the retailers (or the console makers) out of the loop. In this case they do: Let people buy games for Linux instead of Windows and get an automatic 42% bump in revenue from everyone who does. Why wouldn't they do it? Especially given that they already have to write portable code in order to support Windows + non-Microsoft consoles + maybe Mac or (depending on what kind of game) Android and iOS, etc. It's a lot easier to port something to the third OS once you've already done the second one, because the second one caused you to identify and separate all of the bits that are platform dependent, or (better) choose platform-neutral libraries rather than platform-specific ones in the first place. And if Linux becomes a common gaming platform, and is free and capable of running on all computers, it becomes easier for game makers to ultimately say "we're not supporting Windows anymore, here's a free Ubuntu live CD" -- or just raise the price of the Windows version of the game by 42% more than the Linux version to make up for the 30% cut Microsoft is taking and let the free market do the work for them.
- Someone 14y agoI would think the answer is a mix of "because that's where the money is" and "because that is the OS they run themselves"
- d0m 14y agoOne reason is just that since game development is mostly all windows based, new programmers learn to use windows tools.. and thus become more experienced with them and not wanting to switch to something completely new which would require a loss of productivity. Also, and that's really only based from my experiences, it seemed to me that game developers aren't that much into "hacking" linux. Things should just Work. The terminal is a deprecated tool compared to new intuitive IDE. Most of you won't agree with these statements (And I clearly don't) but that's really what I've felt every time I'd talk with a game developer friend or colleague. And, this mentality goes back to when I was an engineering students.. While I had fun learning linux and Python, friends graduating in video gaming would laugh of Python for being a "scripting non-performant language" or they would play around in visual studio with C# and making forms or build some games with XNA. So, sometimes I think it's not that much about linux not being "good enough" but more about video game developers' mentality to not fit with it. Man, I won't lie, I'm an experienced Linux developer and user and I always have to lurk in all kind of forums and RTFM on every small things that needs to be installed (which is not in the standard library). And, it often happens that I break stuff and spend countless hours trying to fix it. Hell, even last week, I've upgraded a server on Archlinux and it totally broke my system without any warning. I really needed help so I went on #archlinux and I've been told that I should have read the archlinux news before tempting an update. Fair enough, I guess.. but I can understand that on a extremely tight schedule, games developers can't waste time on stuff like that. Compared to say, [next] [next] [finish] windows install where everything just Work. Please, don't down-vote me if you don't agree with things I've seen from my experience. I don't agree with it neither, but I thought I'd share it here. It's really something I see coming again and again from all kind of different video games programmers.
- gizmo686 14y ago>Hell, even last week, I've upgraded a server on Archlinux and it totally broke my system without any warning. I really needed help so I went on #archlinux and I've been told that I should have read the archlinux news before tempting an update. Fair enough, I guess.. but I can understand that on a extremely tight schedule, games developers can't waste time on stuff like that. Compared to say, [next] [next] [finish] windows install where everything just Work. I don't think Arch is a fair comparison to make. The Arch wiki describes it as: "Arch Linux is an independently developed, i686/x86-64 general purpose GNU/Linux distribution versatile enough to suit any role. Development focuses on simplicity, minimalism, and code elegance. Arch is installed as a minimal base system, configured by the user upon which their own ideal environment is assembled by installing only what is required or desired for their unique purposes. GUI configuration utilities are not officially provided, and most system configuration is performed from the shell and a text editor. Based on a rolling-release model, Arch strives to stay bleeding edge, and typically offers the latest stable versions of most software." [1] I use Ubuntu primarily, but use Windows exlusivly to use LabView for a local robotics team. I have had issues with both systems. The difference for me is that when the issue was with Ubuntu, I can norally get it back to a workable state withing 10 minutes, or if desperate do a full reinstall in under an hour after which point I have all of my same programs installed, and my configurations/user data restored. When my problem is with windows, solving it is a full days work (or more). [1]https://wiki.archlinux.org/index.php/Arch_Linux https://wiki.archlinux.org/index.php/Arch_Linux
- meaty 14y agopkg-config and autotools!
- gcr 14y agoJust pkg-config for me, thanks.
- netcoyote 14y agoAs someone who has worked extensively in the PC games industry (programming lead on Warcraft, Warcraft II, Diablo, StarCraft, Battle.net, Guild Wars) the reason is quite straightforward: that's where all the users who buy games are. During my time at Blizzard the Mac versions of our titles sold ~4% of the PC numbers, though I expect those numbers have changed with the rise of Apple and, to a much lesser extent so far, desktop Linux. Even with the rise of Linux -- and my belief is that it will rise very rapidly with the advent of Steam for Linux -- PC game developers have years and years of development experience advantage on the Windows platform. When I and my two co-founders (all of us programmers) started ArenaNet to build Guild Wars in 2000 we considered *nix vs. Windows for the server platform and decided that we'd be more productive continuing to build on Windows based on our previous programming background. All of us had extensive experience with low-level coding on Windows (device drivers, async coding with IOCompletion Ports) and knew that it would take time to replicate that expertise on another platform. Beyond the learning curve we knew it would be more convenient to be able to run the game server and game client on the same computer. During development I ran two copies of the Guild Wars match-making server, and two copies of the game client, on a single desktop box to test the matching algorithm code. Having to manage that process across multiple computers would have been more of a hassle. On a personal note, I've been spending a lot of time working on building/using Linux in a virtualized environment (https://github.com/webcoyote/linux-vm https://github.com/webcoyote/linux-vm). Linux is an awesome development environment! While I much prefer doing C/C++ development using Visual Studio, Linux is better for other programming languages I use or have tried: Ruby, Python, Go, D, and Erlang. And the ecosystem, with projects like Redis, ZooKeeper, Postgres and a slew of NoSQL servers makes it incredibly powerful because it isn't necessary to write everything from scratch (except SQL), as we did for Guild Wars.
- RobotCaleb 14y agoThanks for your insights, Patrick. I've heard nothing but good things about working at ArenaNet. Nobody has every mentioned whether that's due to your guiding hand or the fact that you left
- RobotCaleb 14y ago
- eksith 14y agoGame developers target Windows because it's(was?) popular. They'll target mobile devices more and more alongside consoles more and more (although, that line is already starting to blur). Users gravitate toward what's available, what's usable and if possible what has the most vibrant ecosystem of apps. Games, if the developers want to make any money, will target that platform. If the apps are common on a specific platform, then it stands to reason tools for developing other apps/games will also be common on that platform.
- Tekker 14y agoAs 2D video game developer with many titles under my belt, I can assure you it's simply a matter of market share. The general rule (before hybrid CDs) was write it for Windows and if it sells, then write it for Mac (later we would release both Windows and Mac on a hybrid CD). Traditionally Linux was all over the map in terms of graphics, and market share was nil. Nowadays, Linux is prevalent among computer geeks, but in the general population (that have the real $) it's effectively nonexistent. TL;DR - Follow the money.
- PeterisP 14y agoWell, most game development happens for consoles - so if the question is "Why game developers use Windows" not "Why PC game developers use Windows", then it still is an interesting quesion. If you're coding for PS3 or Wii, why is Windows better than Linux or Mac? Marketshare doesn't explain that.
- eropple 14y agoThe tooling is generally better on Windows, or was. A buddy of mine who does some pretty intense PS3 work switched to a Mac about a year and a half ago and said that it was rough going when he'd tried a year or so before that.
- tonetheman 14y agoits all about the benjamins...
- huherto 14y agoThey closed the question. It irritates me that the self appointed stackoverflow police are very quick to close questions. They barely give them a chance to see if something good or creative comes a long. (Such as the first comment)
- godDLL 14y agoOne of my friends is a gearhead, this is what he had to say: "...Shader Model 1.1, which basically was "Whatever the 8500 does."" Correction - it was Shader Model 1.4 The GF3 already did 1.1, and the GF4 Ti (3 years later) did 1.3. A very good read though. A decade of drama put into simple words.