Why do game developers prefer Windows?
programmers.stackexchange.com
programmers.stackexchange.com
Visual Studio + C# + Resharper = .extremely. productive development environment.
Video games tend to require lots and lots and lots of code, so productivity is absolutely critical - especially for independent developers who don't have a dozen man-years to blow on a project. Using autocomplete I can produce raw code an order of magnitude faster than I could by typing out each symbol name by hand. That combined with amazing refactoring/cleanup tools makes windows extremely lucrative for gamedevs.
Also, doing games development in C# doesn't make sense to me, C++ (maybe in combination with a scripting language like Lua) being the defacto standard for games. And if you are an independent that values productivity, C# has approximately the same drawbacks as Java. And there are successful games out there that make use of it, like RuneScape, Puzzle Pirates or Minecraft.
I mean, if you value productivity over runtime efficiency and want something that runs on top of a VM, might as well get something out of it, like portability.
Furthermore the highly popular Unity Game Engine offers C# as its scripting language which is the language of choice for every bigger and serious project because huge projects written in Javascript are alot more pain to maintain. Part of this is Visual Studio excellent features (you dont necessarily need Resharper).
So there actually is alot of C# in game development these days, mostly used as the Scripting language while the engine and APIs are written in C++.
I think you're confusing "xbox live arcade" with "xbox live." You don't have to create games with XNA to get them on xbox live. I specifically remember C++ code in Indie Game: The Movie (for Super Meat Boy). And I'd bet money that Jonathan Blow, the creator of Braid, prefers C++ over C#.
This isn't to say C# isn't a viable option on consoles. I believe FEZ is all C#...that game is incredible, from an art design standpoint at least. It did have visible garbage collection pauses though.
Coming back, proprietary technologies used in $$$ video games, support only windows operating system. Visual Studio can be one of the reasons too.
Why not? Not everyone is doing the next Crysis.
> I mean, if you value productivity over runtime efficiency and want something that runs on top of a VM, might as well get something out of it, like portability.
Why don't people learn about compiler design? languages != implementation
Are you aware that Mono also compiles to native code or that .NET on Windows Phone 8 is also compiled to native code?
Having said that, given the prevalence of Windows on the games industry, many studios have migrated their C++/MFC tooling to C#/Windows Forms/WPF, even AAA studios.
Good Graphics and Physics, where required needs performance. As the hardware is improving day by day, our demands are increasing two folds. Just think about the performance we would need, to render the real world as is !!!
We are going towards virtual reality. We need something with very fast optimised runtime.
Some games does not require cutting edge Graphics. Use anything there....
Fact is that eventually the optimizers for the given compiler get good enough for the task at hand and people move on.
Most intensive graphics and physics are already being done on the GPU anyway and there are quite a few ways to target them as well.
Also, GPU is a temporary technology. Wait for some time, and see CPUs getting more GPU like.
How exactly would CPU be more like GPU? What would happen to branching and out of order execution pipelines? Do you see today's complex superscalar cores so cheap and small in the future that you could have thousands of them on single die? What other way is there get vector computations to work as well as scalar computations on same hardware? Would you rather have few superscalar cores and a lot of SIMD's around it? Or do you envision a completely new architecture?
I'm just trying to get a picture of how this would be done. Any reading material would be welcome.
Yes they do when shared memory is used, not all GPUs have dedicated memory.
Even the PS4 will have shared memory between CPU and GPU systems.
> Also, GPU is a temporary technology. Wait for some time, and see CPUs getting more GPU like.
This is Intel's wish because their GPUs suck, I don't think it will happen.
Game devs head for it too, so that they don't have to manage a shader language.
It is inevitable. This will happen.
In addition, considering there's languages out there with much, much greater runtime inefficiencies of languages like python being used in the client/server side of massively complex games like Eve Online, there's a lot more that should be taken into consideration when choosing a language other than raw speed.
C++ might be an old workhorse for AAA titles needing the best of performance out of the platforms they're targeting (a very specific case), but aside from the loss of productivity, there's plenty of places C++ won't reach: Not everyone has native client, and writing your game as an ActiveX component is easily going to scare people off.
For example, Forth is more productive than say, perl to me; But perl is more productive for sys admins.
To top it off, many indie games are written in C++, 0ad is a good example.
In the games industry they probably overlap, but outside the games industry, Java's support is much broader.
That, and I haven't worked on a Java project yet, that didn't really annoy me.
Its the VM level portability that counts.
The thing is languages like C and C++ is that their runtime libraries are so thin that you end up being dependent on the OS API for anything useful.
Most other languages, even native compiled ones, tend to offer better set of libraries along side the compiler.
Want to develop for a TI processor/controller or a Analog devices one? Or anything for that matter? Its a certain that the Linux/Mac tool support is no where closer to Windows. Yes you can argue that you can bypass all that roll out your tool chain and use it. The argument works for a hobbyist set up. If you are doing serious work, which has some form of revenue or business impact at work then its pointless to be solving meta problems when the actual problem is on standby.
Its all about tooling support. If your largest customers are corporate ones. They will inevitably use Windows due to ease of administration and support for tools like Microsoft office. And since most of your customer are using Windows the vendors will always provide a degree of better support for Windows.
Windows wins.
Why is Windows "easier to administer than Linux"?
With Ubuntu you have one single place to keep all your OS packages up-to-date: apt-get. With Windows, each program installs its own installer, which means boot gets slower...and...slow...er... every time you start it up.
Those updaters all have GUI prompts. Good luck getting them to run remotely, or finding documentation on their command-line parameters (if they accept any).
For that matter, on Linux, you can run commands remotely with ssh. On Windows...there really is no good way to run commands remotely, is there? Other than installing an SSH server in Cygwin or mingw, that is.
And even if you can run administration scripts remotely, Linux distros usually have Bash and Python (at minimum!) installed by default. Although cmd.exe has improved since FOR was introduced, it still leaves much to be desired compared with the flexibility of Linux scripting languages.
Historically speaking desktop Windows has always been easy to administer than Linux. Heck Desktop Linux had no common standard(and still doesn't actually) Want a good standard mail client? Or a spread sheet program? Like it or not Microsoft office has little competition. Its a lot more easier to deal with one true version of Windows, install patches, security updates and other corporate stuff than deal with endless flavors of Linux with each having a different way of doing things.
>>With Ubuntu you have one single place to keep all your OS packages up-to-date: apt-get. With Windows, each program installs its own installer, which means boot gets slower...and...slow...er... every time you start it up.
... ...
Agreed. But that is happening now. Historically Linux had nothing like a Ubuntu.
That said, you can still put SSH/Telnet on windows even over a VPN. I currently have NodeJS on my servers, so I can run a pretty wide variety of tasks, even through the node REPL interface.
Not a fan of PowerShell...
It could be less verbose, but it is still way better than the old cmd.
Btw "which means boot gets slower...and...slow...er... " basically means you are doing it wrong :P
Toolsets are much more obtainable on Windows. That includes cracked apps, educational licenses, and plenty more sources. They're also more expansive; almost anything runs on Windows, even if in an intermediary way. There is also a vast majority of apps that run solely on Windows.
Huge majority of your end users are on it, so you need to have it anyway. Running a VM just to test stuff out is inconvenience to say the least.
Other devs to whom you communicate use it.
Documentation and help all over the internet covers Windows side much better than other OS'. Source files already available for inspection are usually made to compile on Windows.
Macs are expensive and whole experience of being jailed in OSX doesn't really go well with indie attitude. IOS gold rushes somewhat turned game dev eyes on it, but that's dying recently, as more and more devs try to find opportunities on various existing and upcoming Android stores. Toolsets for iOS sucked anyways.
Linux (on which I'm trying really hard to develop a workflow) lacks application ecosystem neccesary to fuel all the game development aspects.
Last, but not least - gaming. We game a lot. And a lot of it is nostalgic, some for inspiration. No other OS offers such a huge quality game title offering as Windows does.
Games studios operate on extremely tight budgets, often a hand to mouth existence on publisher deliverables. This is their only revenue stream. It simply makes no sense to move a team of 50 people to another OS when everything they need and know already exists in Windows.
I've been out of the industry for 5 years now, I still keep in contact with my friends in the industry, and as far as I know things are still the same.
Its really that simple, wed see alot more Linux games if the market was viable, right now it simply isnt. Even on mobile many games are iOS only because many developers think Android isnt viable yet in terms of monetization while Androids marketshare is bigger than iOS. Looking at that, Linux gaming still has a long road ahead but its getting better, especially when it comes to Indie games.
1. PC Games
2. Visual Studio
Quake was developed using NEXT station (first version of QuakeEd was written in Objective-C and running on it), but since then the tools were transfered to Windows along with the game distribution. Modders could add new levels, change existing assets all on their own machines.Windows is easy to get, easier to administer, or to say properly - not administer at all, and in the pre-internet years it was not a big deal.
Also all proper graphics cards, drivers were available first on Windows, and Microsoft somehow nailed it with D3D.
Gamers would use Linux if there were lots of Linux games.
Developers would write games for Linux if gamers used it.
The situation is slowly changing, since the rise of widespread broadband has let indie developers break the hold of big publishers on distribution channels, and a fair number of indie developers are willing to support Linux for ideological reasons.
Now, there are plenty that prefer Visual Studio as well, over other dev environments. I very, very, very rarely do C/C++ coding (forgotten most of what little I ever knew), so can't comment there.. I will say I prefer VS + C# over most of the Java options I've tried... though I am using WebStorm for NodeJS dev (based on InteliJ)
Visual Studio, although apparently beloved, is just an IDE.
Look at the rise of consoles, look at this thread.
See the talk of there not being 'standards' on Linux and consider the biggest way the Linux community gets around that: Open Source codebases that rely on users who are also devs to help fix things up and get them working everywhere.
Linux isn't an ideal 'uniform consumption device', so it's not an appealing target. Now it's starting to get some love because people are looking around and asking 'What about freedom?'.
I still don't understand that. Simply support ubuntu only, the other distributions will do the rest. E.g. the steam beta worked fine on archlinux and fedora from day one. And if they have problems you can either decide to look into it or ignore it because you officially only support ubuntu.
Firstly historically speaking Ubuntu has gotten famous only now.
Secondly, another distro fan is likely to argue <insert his favorite distro here> should be supported rather than ubuntu because of <insert a pedantic reason here>.
Agree on a standard that works for every one and then we shall talk.
It's just another linux and everything can be ported from it if necessary. Even unity would work fine, once ubuntu's patched x.org and libindicator were on Archlinux.
As far as I know ubuntu has been the the most popular (for targetting software) distribution for several years now, so why not?
The only reason steam is made specifically for ubuntu is because it uses apt-get to actually get steam. If valve put more effort into making it like every other linux application nobody on any distro would have trouble running it.