Game development on: Linux or Windows

Started by
45 comments, last by cr88192 11 years, 2 months ago

Hello, folks!

I've got a dillema here. I've started to learn game development, more specificaly -- OpenGL. My GPU supports OpenGL only up to 3.1 version, so drivers on Linux isn't the problem here. The problem is, that most of the companies create games or game engines only for Windows or OS X, so I thought an experience in working with Windows would be good. But... I'm a total Linux lover and after installing Windows... I just hate them and I very much miss Linux. I've been thinking a lot, but if I stay with Windows, I'll have more pros. I look forward for any opinion on what should I do, what are the advantages on staying with Windows, or working on Linux etc.

--Arnas

Advertisement
Anything regarding the future of gaming on Linux as a result of Valve is just speculation at this point, so I won’t consider it in my answer.

There are several issues to consider and you will have to consider them for yourself.

Firstly, if this is just as a hobby, stick with what you love. If you plan to go commercial, which is unlikely for a long time, Windows may be a better choice. Sometimes making money means making sacrifices.

Secondly, if you do plan to go commercial, as an indie it would be more practical to target iOS (target Android only if you are masochistic). The level of quality a game needs to be marketable on Windows is above what most individuals can achieve. This would be true even if you stayed on Linux, but with the added hurdle of a smaller potential customer base. iOS is OpenGL ES 2.0 anyway, which is really better to learn than OpenGL since it doesn’t have all the deprecated/excess cruft OpenGL has. I see people even today learning OpenGL who somehow managed to do so via immediate mode. OpenGL ES removed all the crap that should never have been there in the first place, so you are fairly safer in your learning process by starting with it.

Thirdly, if you did decide to go with Windows, it wouldn’t make sense to use OpenGL. You would want to avoid a lot of headache and use either Direct3D 9 or Direct3D 11. If you are fully decided that OpenGL will be your API-of-choice, Windows is still an option, but a less-sensible one. Not because OpenGL on Windows specifically has problems, but because OpenGL itself has problems with the large variety of vendor implementations etc. It is easy to see questions here constantly about how it works on nVidia but not on ATI. My own engine has the opposite problem, as I just discovered after buying an nVidia card (whereas it functions identically in Direct3D 9 and Direct3D 11). This is a problem with the vendors and the multitude of implementations out there, which means it is not just Windows, but Linux too. So if you do go to Windows, Direct3D * would be a better choice.


L. Spiro

I restore Nintendo 64 video-game OST’s into HD! https://www.youtube.com/channel/UCCtX_wedtZ5BoyQBXEhnVZw/playlists?view=1&sort=lad&flow=grid

Anything regarding the future of gaming on Linux as a result of Valve is just speculation at this point, so I won’t consider it in my answer.

There are several issues to consider and you will have to consider them for yourself.

Firstly, if this is just as a hobby, stick with what you love. If you plan to go commercial, which is unlikely for a long time, Windows may be a better choice. Sometimes making money means making sacrifices.

Secondly, if you do plan to go commercial, as an indie it would be more practical to target iOS (target Android only if you are masochistic). The level of quality a game needs to be marketable on Windows is above what most individuals can achieve. This would be true even if you stayed on Linux, but with the added hurdle of a smaller potential customer base. iOS is OpenGL ES 2.0 anyway, which is really better to learn than OpenGL since it doesn’t have all the deprecated/excess cruft OpenGL has. I see people even today learning OpenGL who somehow managed to do so via immediate mode. OpenGL ES removed all the crap that should never have been there in the first place, so you are fairly safer in your learning process by starting with it.

Thirdly, if you did decide to go with Windows, it wouldn’t make sense to use OpenGL. You would want to avoid a lot of headache and use either Direct3D 9 or Direct3D 11. If you are fully decided that OpenGL will be your API-of-choice, Windows it still an option, but a less-sensible one. Not because OpenGL on Windows specifically has problems, but because OpenGL itself has problems with the large variety of vendor implementations etc. It is easy to see questions here constantly about how it works on nVidia but not on ATI. My own engine has the opposite problem, as I just discovered after buying an nVidia card (whereas it functions identically in Direct3D 9 and Direct3D 11). This is a problem with the vendors and the multitude of implementations out there, which means it is not just Windows, but Linux too. So if you do go to Windows, Direct3D * would be a better choice.

L. Spiro

Actually, I'm not planning to create mobile games at all, because I don't like them. Will I go commercial? I don't know. Currently I'm only at 11th grade, so I will still be studying at school for 1+ years, plus minimum 4 years at the university. After that, I might go commercial, because atm I want game development-related job, and yes, game development is my hobby now.

What about Direct3D... I heard it's API is really crappy, so is the documentation. So, it could be hard to learn it, true?

What about Direct3D... I heard it's API is really crappy, so is the documentation. So, it could be hard to learn it, true?

Judging by your opening post about loving Linux it isn't overly surprising you've heard this however it couldn't be further from the truth.

Of the two APIs D3D11 is the better of the two; it is well documented and all together saner.

OpenGL, while feature wise is on a level with D3D11, remains tied to the broken bind-to-edit model which makes working with it pants-on-head retarded.

That said working with OpenGL won't hurt you initially so you don't feel you have to swap over to Windows in order to progress; all the basic knowledge of 3D rendering is transferable between the two, you just have to learn a different way of doing things. You'll probably want to pick up D3D at some point however right now you can focus on expanding your knowledge with OpenGL on Linux.

I encourage you to spend time and look at a few different operating systems, APIs and development environments in general. I found love with OpenGL and KDevelop on KDE in Linux (Kubuntu). I haven't looked back in quite a while. I keep my engine/games cross platform so they'll run on Windows, OSX and Linux though, just for good form.

Douglas Eugene Reisinger II
Projects/Profile Site

What about Direct3D... I heard it's API is really crappy, so is the documentation. So, it could be hard to learn it, true?

False. It's actually the opposite; OpenGL's API hasn't changed much since the 80's and the documentation is practically nonexistent (in fact, if you go to the OpenGL website, it says "The two essential documentation resources that every developer should have are the latest releases of:" and then gives two links to Amazon books you need to buy).

It's much harder to learn to use effectively, since the API no longer reflects much of what happens in modern hardware, and there are multiple paths to accomplish most tasks, the right one being non-obvious or even changing depending on which hardware vendor or driver version you're using.

That said, if you're targeting any platform other than Windows, you don't have much choice but to suck it up and tough it out anyway.

Mike Popoloski | Journal | SlimDX

It shouldn't be too hard to port the Linux application to Windows, whereas it is not realistic to port a D3D Windows application to Linux.

If you use a library like glfw (portable context and input device management), then you are already half way.

In Windows, you set up MinGW, to get a similar environment. There may be problems depending on what Linux libraries you used, it depends. In my experience, OpenGL is not one of the problems (except for Intel graphics).

[size=2]Current project: Ephenation.
[size=2]Sharing OpenGL experiences: http://ephenationopengl.blogspot.com/

Basically it's up to you. Linux applications are common to be portable (unlike for Windows application). Although it's all about your will (do you want your software Windows-only, or portable).

It's possible to write easily portable software on Windows, and it's also possible to write non-portable software on Linux. For example we're sticking in all our applications to standard libraries (basically *just* bare standard of libc, (sometimes libstdc++ - depends on language we use)) and portable libraries (OpenGL, OpenAL, DevIL, GTK, ODE, etc.) - most of them are also open source by the way. E.g. we're basically trying to make our software system independent.

We're writing & testing all our software under both systems. So far we haven't met any system-specific problem!

#larspensjo - I object to port of D3D applications. If you rewrite your D3D functionality to WineD3D (this actually makes your software portable - and use OpenGL instead of D3D in the end), although I don't actually know how much work it is, because I haven't worked with WineD3D.

My current blog on programming, linux and stuff - http://gameprogrammerdiary.blogspot.com

If you rewrite your D3D functionality to WineD3D...

I didn't know of WineD3D. On the other hand, it hasn't changed for 3 years. Doesn't have to be a problem, but usually a sign of a package in decline.

[size=2]Current project: Ephenation.
[size=2]Sharing OpenGL experiences: http://ephenationopengl.blogspot.com/

I want game development-related job

This is just another thing to consider, but since it is your future career it is probably the most important thing to consider.
I can personally vouch for Nintendo DS, Nintendo Wii, Nintendo 3DS, Xbox 360, PlayStation 3, PlayStation Portable, PlayStation Vita, and Android all requiring Windows for development, and iOS requiring Mac OS X (I have been corrected on Android—it has kits for Linux, but it is the only one in this list that does). The only time I have ever even seen a Linux machine was the one day I worked at Morgan Stanley, which is clearly unrelated to video games.

Not only that, excluding mobiles (since you stated you don’t want to work with them), all current consoles, as well as development for Windows, are much closer to (or exactly) DirectX 11. It is no secret that the next Microsoft console will use DirectX 11, and PlayStation 4 will be as well (or rather extremely similar). These will likely still be the relevant consoles when you graduate.

Ultimately, as was said, you can learn OpenGL as a means of learning general rendering concepts, but you can do the same with Direct3D 11 and avoid having to relearn an API in the future. In other words you can learn the concepts and then struggle with the relevant API later, or you can just learn the concepts and the relevant API up-front.

Besides, as was also stated, OpenGL’s bind-to-edit mechanism is a headache and OpenGL is simply refuses to evolve, sticking to the mistakes of a somewhat naïve upbringing for the sake of compatibility, whereas Direct3D 11 is a recently fully overhauled API designed to match the way modern graphics hardware works, where backwards compatibility has been sacrificed in order to rid itself of design flaws of the past.

By now the choice should be fairly clear. And speaking from personal experience when I had to work on Mac OS X after having avoided it like the plague for decades: You get used to it.

L. Spiro

I restore Nintendo 64 video-game OST’s into HD! https://www.youtube.com/channel/UCCtX_wedtZ5BoyQBXEhnVZw/playlists?view=1&sort=lad&flow=grid

This topic is closed to new replies.

Advertisement