🎉 Celebrating 25 Years of GameDev.net! 🎉

Not many can claim 25 years on the Internet! Join us in celebrating this milestone. Learn more about our history, and thank you for being a part of our community!

If I want to design or program games for Sony and Microsoft, am I on the wrong path?

Started by
26 comments, last by Pto 13 years, 7 months ago
Quote: Original post by Tom Sloper
Quote: Original post by GraySnakeGenocide
I just hope i'm not wasting my time

So you're saying you are lazy. Sorry, but lazy people cannot hack it as game programmers. Fact of life.


Jeeeze...

C# is a decent start and you can certainly make games with it (via XNA mainly) but in the professional circuit you need to know C++. It can still be beneficial to know C# since it's heavily used in tools development. So no, it's not a waste of time, but you do need to learn C++. If you were learning COBOL instead I think we can agree that would be a waste of your time.
Advertisement
Learning *just about anything* is never a waste of time. Particularly learning lots of languages as a programmer exposes you to many different practices, idioms, patterns and ways of thinking that can be, at times, very much a departure from things you know of other languages.

The transition from C# to C++ (or Java, or VB.Net or vanilla C) isn't much more than lifting a single finger in computer science terms, since all of these are primarily procedural languages on the same branch of programming's family tree. There exist bodies of other languages which compose entirely different branches and entirely different ways of thinking, such as Functional programming which is embodied by languages such as F#, Haskell, Ocaml and Erlang. Functional programming has become a topic of interest as of late because it emphasizes a way of structuring problems that scales trivially across many threads, and also because it produces very concise code that one could say is higher-level than languages like C++. Languages like C# and C++ are both adopting new features which come from the functional world because these techniques are valuable.

There are also different paradigms which are largely orthogonal to syntax. For example, there has been a recent emphasis, especially in game development, around something called "Data-Oriented Design". Much of Data Oriented Design flies in the face of classic Object-Oriented Design, because it organizes code around data flow patterns, rather than the other way around. This isn't strictly anything new, as high-performance particle systems have been organized in this way for years, but its now being applied much more widely because its the best way to extract performance in a bandwidth-limited world (and it also tends to break things apart nicely for threading purposes).

My point is, you need not only diverse "tangible" skills, but also the skills to understand and adapt to ways of thinking that are constantly evolving. If you think that there's one all-important super-skill that you can posses and be done with it, then you may want to re-think your interest in programming.

Right now, just worry about learning programming and the fundamentals behind it -- the question of one syntax vs. another has nothing to do with your marketability *right now*, so you should instead focus on choosing a language which will least get in the way of your understanding. C# is a fine choice for that, and a marketable skill to boot. You will need to know C++ to hack it in the console world, but there's plenty of time to transition to those skills.

throw table_exception("(? ???)? ? ???");

Quote: Original post by GraySnakeGenocide
At this moment I am currently learning C# and XNA, which is strictly Microsoft/360.

Not specifically, there's work on a Mono port for XNA. But for the most part XNA is Microsoft specific. However it is not restricted to just the PC and Xbox platforms, but also is enabled for the Zune and Windows Mobile.

At the end of the day, the things you learn when using XNA will be applicable to almost all game programming, including things like: batching, memory management (yes, you still have to do this, especially on the 360), algorithms, and shaders.
Quote: I hear almost all Sony games are made using C++. Which was my original programming choice, but my friend convinced me to switch to C#/XNA because it would be "quicker" per se to be able to make a game, and so we could work together.

Most console programmers (in the game programming field) will have YEARS of experience on you. Don't worry about this. You have a long way to go before you even need to worry about getting hired, let alone hired to do console programming. You should also be aware: the game development field is impacted. There are few jobs, and lots of people who have very good credentials for those jobs already out there hunting.

Quote: But, the main deal is, am I on the wrong path if I would like to make games for both Sony and Microsoft? Or am I on a one-way street to making games for Microsoft?

Learn to program first. If C# is hard for you, then C++ will be neigh on impossible. Your goal should be to learn to program/problem solve, then worry about writing games, then you can start to worry about other languages.

A good programmer will learn many languages over their lifetime, and the more languages you expose yourself too, the more well rounded your skill-set will become.

Leaning any language, even COBOL, is never a waste of time.

In time the project grows, the ignorance of its devs it shows, with many a convoluted function, it plunges into deep compunction, the price of failure is high, Washu's mirth is nigh.

Quote: Original post by Washu
Learning any language, even COBOL, is never a waste of time.

Even Chinese. Even Spanish. Even Icelandic. Not a waste of time.

-- Tom Sloper -- sloperama.com

Okay, learning any programming language may not be a true waste of time, but spending time learning a language that isn't going to help you achieve your immediate career goals, when you could just as easily be learning one that is, is an *inefficient* use of your time.
Quote: Original post by doesnotcompute
Okay, learning any programming language may not be a true waste of time, but spending time learning a language that isn't going to help you achieve your immediate career goals, when you could just as easily be learning one that is, is an *inefficient* use of your time.


Its not like you can just mess around with C++ for a couple of months with no prior programming experience, and find a programming job. It generally takes years.
Quote: Original post by doesnotcompute
Okay, learning any programming language may not be a true waste of time, but spending time learning a language that isn't going to help you achieve your immediate career goals, when you could just as easily be learning one that is, is an *inefficient* use of your time.


Learning more languages will make you a better programmer overall. Single applications being written with more than one language are becoming the norm these days. So it's beneficial to be able to jump around between languages, especially ones that use very different paradigms.


Quote: Original post by doesnotcompute
Okay, learning any programming language may not be a true waste of time, but spending time learning a language that isn't going to help you achieve your immediate career goals, when you could just as easily be learning one that is, is an *inefficient* use of your time.


Not exactly. The hard part of programming has NOTHING to do with the language. Learning to find crash bugs in Java, C++ or C# all take the same skill set (and frustration tolerance). If you use System.out.println(), printf(), or Console.WriteLine() is irrelevant. How you trace your code, and lay it out, how you scan API documentation to find what you need, how you track down bugs are the important part of the skill.

Its like driving - is the hard bit of driving about whether you drive an SUV or a sports car? Or is the hard bit of driving understanding gears, learning road rules and anticipating what other drivers will do? If your a good driver and suddenly have to drive a mini-bus is all your time spent in other cars wasted? Of course not! You'll stick the gears a few times then be fine.

If you become a kick ass C# coder and really understand what your doing, learning C++ when your ready to make the jump will take a month at most. Right now what you need is practise. Pick the language that works for you, ignore whats "cool right this second" and write code. Right now you need hours spent coding and that is all. Practise Practise Practise and the rest will follow!

This topic is closed to new replies.

Advertisement