• Announcements

    • khawk

      Download the Game Design and Indie Game Marketing Freebook   07/19/17

      GameDev.net and CRC Press have teamed up to bring a free ebook of content curated from top titles published by CRC Press. The freebook, Practices of Game Design & Indie Game Marketing, includes chapters from The Art of Game Design: A Book of Lenses, A Practical Guide to Indie Game Marketing, and An Architectural Approach to Level Design. The GameDev.net FreeBook is relevant to game designers, developers, and those interested in learning more about the challenges in game development. We know game development can be a tough discipline and business, so we picked several chapters from CRC Press titles that we thought would be of interest to you, the GameDev.net audience, in your journey to design, develop, and market your next game. The free ebook is available through CRC Press by clicking here. The Curated Books The Art of Game Design: A Book of Lenses, Second Edition, by Jesse Schell Presents 100+ sets of questions, or different lenses, for viewing a game’s design, encompassing diverse fields such as psychology, architecture, music, film, software engineering, theme park design, mathematics, anthropology, and more. Written by one of the world's top game designers, this book describes the deepest and most fundamental principles of game design, demonstrating how tactics used in board, card, and athletic games also work in video games. It provides practical instruction on creating world-class games that will be played again and again. View it here. A Practical Guide to Indie Game Marketing, by Joel Dreskin Marketing is an essential but too frequently overlooked or minimized component of the release plan for indie games. A Practical Guide to Indie Game Marketing provides you with the tools needed to build visibility and sell your indie games. With special focus on those developers with small budgets and limited staff and resources, this book is packed with tangible recommendations and techniques that you can put to use immediately. As a seasoned professional of the indie game arena, author Joel Dreskin gives you insight into practical, real-world experiences of marketing numerous successful games and also provides stories of the failures. View it here. An Architectural Approach to Level Design This is one of the first books to integrate architectural and spatial design theory with the field of level design. The book presents architectural techniques and theories for level designers to use in their own work. It connects architecture and level design in different ways that address the practical elements of how designers construct space and the experiential elements of how and why humans interact with this space. Throughout the text, readers learn skills for spatial layout, evoking emotion through gamespaces, and creating better levels through architectural theory. View it here. Learn more and download the ebook by clicking here. Did you know? GameDev.net and CRC Press also recently teamed up to bring GDNet+ Members up to a 20% discount on all CRC Press books. Learn more about this and other benefits here.
Sign in to follow this  
Followers 0
Aluthreney

Programming: Linux vs. Windows?

41 posts in this topic

It's been said before, but really, it boils down to 1) who your target end-user is and 2) what's your personal preference. If you're familiar with Windows and will be writing software for people running on Windows, then by all means use Windows. Ultimately, in terms of getting stuff done it shouldn't matter because you can setup efficient development tool chains in either. Under Windows, the de facto standard is Visual Studio, which bundles everything you'll care to use for day-to-day activities: editor, compiler, linker, debugger.

Under Linux, you're more likely to use (at first) a more decentralized tool chain. You'll pick an editor (vim, emacs, nano, joe, whatever) and do all your coding in all that. You'll more likely than not use GCC for compiling and linking, on the command line. It's definitely a different approach than you'll typically see using Visual Studio, but after fumbling a bit with the options, it's not really that hard to use. Eventually though hand compiling is bloody tedious, and then you'll look at some sort of build system. The foundation for a lot of build systems under Linux is GNU Make and the Makefile. You may write a couple of these for some small projects, but then realize that writing these, too, by hand tends to suck. And that's when you start learning to use one of the many open source build systems out there. For the longest of time, and even still today, the Autotools package has been the de facto standard for building projects from source under Linux. I damn well near shot myself trying to figure out how to use it effectively and instead switched to CMake. If I were to recommend an open source build system for someone to use, it'd definitely be CMake. Once things are built though, and you start running your programs, you'll then start using GDB (with possibly one of its many front-ends) predominantly for your debugging purposes.

Now I may make Linux to sound like this PITA to use on a day-to-day activity, but honestly, once you get the initial project files setup, it's really not that bad. There are also IDEs under Linux that (I would guess) automate a lot of the setup, for instance tools like Eclipse CDT (note, I've never used it, so I don't know what all it provides) and bundle your tool chain into one place if you like that approach. Personally I find it useful to at least be aware of what these environments are doing for you behind the scenes because at the end of the day, they're still using a lot of the tools I mentioned above, and if anything screwy happens from within the IDE, it might be helpful to understand exactly which tool failed when trying to diagnose the problem.

As far as third party library support goes, it's pretty much a toss up. You can always find examples that go both ways where a library is easy to configure and install under one OS and not the other. But that's the "fun" with cross-platform, open source software. Linux package managers may make this easier because they'll (for the most part) know how to also install whatever additional third party dependencies are needed, but for well known and popular libraries, typically I've seen developers either 1) provide a link to the exact dependencies you need to build their software, 2) provide binary distributions to the dependencies you need, or 3) bundle the source code for the dependencies you need with their software. Regardless of whatever OS you choose, you're going to find some library or tool that's going to require some finagling to get working right -- just comes with the software development gig.

2

Share this post


Link to post
Share on other sites
[quote name='Matias Goldberg' timestamp='1315589186' post='4859644']
I have a really hard time understanding how is it that pressing "F7" is worse than typing "cd pathto/folder" then "make all" or hitting "F5" is worse than typing "gdb myapp run"
[/quote]
It's easier. But having it easier means that in an environment without one, you're lost. All you know is that you need to press F5 to debug a project, or F7 to build/compile. You don't actually learn how it works under the hood.

[color="#1C2837"][size="2"][quote]note, I've never used it, so I don't know what all it provides[/quote][/size][/color]
[color="#1C2837"][size="2"]It provides you with coffee time during boot ;)[/size][/color]
0

Share this post


Link to post
Share on other sites
[quote name='alvaro' timestamp='1315598294' post='4859725']
[quote name='elondon' timestamp='1315594395' post='4859695']
One important thing is if you plan on building enterprise software in a corporate environment, Linux is almost completely useless on the front-end.[/quote]

On the other hand, if you plan on writing software to run on servers, most industries don't use Windows.

[/quote]

Touche.

WinServer 2008 R2 is pretty cool - and we do write quite a bit of software that runs on our windows boxes to maintain our systems and provide connectivity to client apps. Although, I'm going to guess that isn't what you mean by writing software that runs on servers. :)

I swear I'm not a Microsoft fan boy!
0

Share this post


Link to post
Share on other sites
[quote name='alvaro' timestamp='1315593353' post='4859688']
[quote name='Antheus' timestamp='1315592053' post='4859673']
[quote name='alvaro' timestamp='1315591152' post='4859665']
I became a much better programmer when I moved from Windows to Linux, primarily because I was forced to learn how to write portable code, but the key is that I was exposed to both.[/quote]

And here's the proof that knowing Java alone will make you superior programmer.
[/quote]

That made no sense.
[/quote]
java code is inherently cross-platform unless you utilize native code.
0

Share this post


Link to post
Share on other sites
Just do this: Install Windows (or buy a computer with it). Then boot up a linux CD and install linux next to Windows so you can boot into Windows for gaming (linux lacks much in this department) or whatever floats your boat, and if you want to program in either, you can. Just always have Windows on the machine first if you are going to install them side by side to dual boot.
0

Share this post


Link to post
Share on other sites
Linux will throw you in at the deep end. You'll know more sooner out of necessity. The down-side of that though is that the initial climb will be steeper and perhaps frustrating at times, depending on your temperament :)

If you want get started faster and aren't the kind of person that needs to know what's going on under the hood, Windows (with Visual Studio) is likely more appropriate.
0

Share this post


Link to post
Share on other sites
[quote name='jlouts' timestamp='1315606153' post='4859772']
java code is inherently cross-platform unless you utilize native code.
[/quote]

This whole thing is off topic, but I'll bite.

Java runs on a single plaform: The JVM. There are emulators for the JVM for many platforms, but the way I see it that's not being multi-platform.


0

Share this post


Link to post
Share on other sites
[quote name='SymLinked' timestamp='1315593132' post='4859683']
I have friends who think you're not a good programmer if you don't program in (Linux) Vim or whatever it's called (it's basically a Notepad-ish style code editor). Those friends also happen to not have finished any useful projects and I think many of the zealots fall into this category.
[/quote]

Careful what you say about Vim. It's about as different from Notepad as possible for a text editor to be. In terms of text editing speed, I don't think a tool exists that allows an experienced user to edit faster than Vim. As for you friends not finishing any useful projects... well... finishing a programming project has many (possibly more important) requirements beyond being able to edit text efficiently.


Regarding the original thread topic: Anything that enhances your beard will increase your "realness" as a man, and therefore, as a programmer.
0

Share this post


Link to post
Share on other sites
[quote name='eugene2k' timestamp='1315601356' post='4859741']
It's easier. But having it easier means that in an environment without one, you're lost.
[/quote]

for 5 minutes.. how long does it take to learn you have to type "blablabla" instead of hitting a button? Do you really think a programmer that masters things such as game programming will be scared to learn a couple of commands to type?

And if you judge from what people write it seems to be more complicated for linux users to learn to press a couple of buttons to do a "hello world" in Visual Studio... use the search button and you will see more than one of these genius at it.
0

Share this post


Link to post
Share on other sites
[quote name='alvaro' timestamp='1315620489' post='4859855']
[quote name='jlouts' timestamp='1315606153' post='4859772']
java code is inherently cross-platform unless you utilize native code.
[/quote]

This whole thing is off topic, but I'll bite.

Java runs on a single plaform: The JVM. There are emulators for the JVM for many platforms, but the way I see it that's not being multi-platform.



[/quote]
JVM uses a JIT to compile java intermediate code to native code of whatever platform it is on. Seems cross platform enough for me, unless you really want java to throw out the compile once run anywhere philosophy, in which case there are various compilers to compile java code to native code.

As for the topic of which OS is best for programming? It really shouldn't matter in this day in age, I bet there are full featured IDEs for linux just as there are for windows and if you wanted to you can use command line for either platform. All that matters is that you're able to get the job done which virtually all operating systems allow you to do easily anymore.
0

Share this post


Link to post
Share on other sites
Whenever I talk to Linux users, they tell me something about freedom and free beer. That might have something to do with what OS they choose.
0

Share this post


Link to post
Share on other sites
[quote name='Gamer Gamester' timestamp='1315634795' post='4859895']
[quote name='SymLinked' timestamp='1315593132' post='4859683']
I have friends who think you're not a good programmer if you don't program in (Linux) Vim or whatever it's called (it's basically a Notepad-ish style code editor). Those friends also happen to not have finished any useful projects and I think many of the zealots fall into this category.
[/quote]

Careful what you say about Vim. It's about as different from Notepad as possible for a text editor to be. In terms of text editing speed, I don't think a tool exists that allows an experienced user to edit faster than Vim. As for you friends not finishing any useful projects... well... finishing a programming project has many (possibly more important) requirements beyond being able to edit text efficiently.


Regarding the original thread topic: Anything that enhances your beard will increase your "realness" as a man, and therefore, as a programmer.
[/quote]

FakeVim for QTCreator(included for free) or ViEmu for VisualStudio($99+ plugin) and you'll get the nice commandbased editing without having to give up your nice IDE. (Commandbased editing is insanely fast when you get used to it)

vim itself can be integrated with pretty much any build system, source control, debuggers, etc aswell though so with the appropriate scripts/plugins it can be a very powerful IDE on its own. (Personally i'm using QTCreator on both Windows and Linux these days since it makes it really simple to write cross platform graphical applications in C++ while i pretty much only use vim to edit scripts remotely (primarily php scripts)).

And ofcourse, vim is available for Windows aswell for those who want that.

The only real advantage Linux has for developers is valgrind, its probably the most powerful free tool of its kind and unfortunatly it hasn't been ported to Windows yet. (There are commercial software for Windows that can do some of the things valgrind does though but those tend to be very expensive and there are free tools that can replace some of the more commonly used valgrind features (I havn't found any that can quite match valgrind though))
0

Share this post


Link to post
Share on other sites
Using the command-line doesn't make you a better programmer and doesn't help you understand your computer better. What makes you a better programmer is the code you write, and it frankly doesn't matter if you write it using an IDE, command-line tools, or even a washing machine. Use the tools that you feel most productive with yourself and never mind what anyone else tells you you should be using.

If you want to be a better programmer then the OS you use is probably the least important thing. Write something, release it and be humbled (and releasing stuff publicly can be an incredibly humbling experience - just watch your carefully crafted code crash and burn horribly on a multitude of different systems owing to edge cases you never even thought of), learn from the experience and your mistakes, repeat, and you will get there.
1

Share this post


Link to post
Share on other sites
If you consider all the Free Software stuff, Linux will be obviously better, but that's an option, and it doesn't have anything to do with the programming itself, so decide the one you like more. I use Linux right now and don't have problems, but have Windows too in another partition and if I make a program for Windows I will use it of course. However, I always try to make things multiplatform, so it''s just compiling in the diferent systems. In that case I program in Linux, just because I like it more, there's no other reason.
0

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.
Sign in to follow this  
Followers 0