Sign in to follow this  
GraySnakeGenocide

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

Recommended Posts

At this moment I am currently learning C# and XNA, which is strictly Microsoft/360.

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.

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?

Share this post


Link to post
Share on other sites
It's not clear if you actually want to work for Sony or Microsoft, or if you want to develop your own games on the xbox/ps3.

If your question is the latter (I'm guessing that it is), than you won't be able to develop anything for the PS3 in any language. You need a devkit to make any games for the PS3, and they cost tens of thousands of dollars and are only sold to professional development studios with a proven track record.

If you want to put something on Xbox360, you can do it in XNA I think and put it for sale on their indie game channel. There's no PS3 equivalent.

Share this post


Link to post
Share on other sites
XNA games are made with C#, but all the regular games you'd go get in the store are written in C++. Also, when making games for the Wii, the DS, the PSP etc it's all C++ too.

If you want to make AAA nextgen games you are going to need to know C++.

If you dont care so much about that, you can make xbox live arcade games with C#, cell phone games with java, and internet games with actionscript.

That being said, if you are after AAA nextgen game development, it could be a good move learning C# first because it's easier to learn and work with, and you get quicker results for your efforts.

Make sense? Hope it helps!

Share this post


Link to post
Share on other sites
I'm saying if I were to work for a company that makes multiplatform games. Would the path i'm on only allow me to make games for Microsoft (being the C# language).

I've heard from quite a few places that most if not all of the PS3 AAA titles are made using C++.

Share this post


Link to post
Share on other sites
Quote:
Original post by Atrix256
XNA games are made with C#, but all the regular games you'd go get in the store are written in C++. Also, when making games for the Wii, the DS, the PSP etc it's all C++ too.

If you want to make AAA nextgen games you are going to need to know C++.

If you dont care so much about that, you can make xbox live arcade games with C#, cell phone games with java, and internet games with actionscript.

That being said, if you are after AAA nextgen game development, it could be a good move learning C# first because it's easier to learn and work with, and you get quicker results for your efforts.

Make sense? Hope it helps!


yeah :(.

How easy is transitioning from C# to C++ though?

Share this post


Link to post
Share on other sites
Quote:
Original post by GraySnakeGenocide
How easy is transitioning from C# to C++ though?


It's pretty easy. The languages are fairly similar. You'll have perhaps a lot to learn about manual memory management.

The reality is that you won't get hired in the professional games industry without knowing C++ very well. It's pretty standard practice to ask questions about more advanced details of the language as part of the interview process.

However, if you're just learning your first language, C++ is generally considered to be a bad place to start. It's far easier to learn your 2nd language than your first, so it's better to learn on a more modern language just so you can avoid some of the lower level details that shouldn't matter so much in the early learning process.

-me

Share this post


Link to post
Share on other sites
Quote:
Original post by GraySnakeGenocide
I just hope i'm not wasting my time, it's a pain in the backside remembering C# as is.


Learning a language is never a waste of time. After you get really proficient with your first language you should strive to learn a new one at least every couple years. It definitely gets exponentially easier with each new language. Remembering syntax is just a matter of practice

-me

Share this post


Link to post
Share on other sites
Quote:
Original post by GraySnakeGenocide
I just hope i'm not wasting my time, it's a pain in the backside remembering C# as is.


Its not a waste of time, you will need to learn far more than one language to be a good programmer anyway.

Share this post


Link to post
Share on other sites
Most professional programmers in the industry have some kind of programming related degree, during which, they'll be exposed to and learn a bit of many different languages.

Once you've learnt to program in one language, it's usually very easy to learn another (of the same paradigm).


If your goal is to make professional 360/PS3 games, then that's a goal that will take many years of training/education -- learning C# now is a decent first step. You can learn C++ and others later.

Share this post


Link to post
Share on other sites
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.


In this case I don't think he's lazy so much as inexperienced. Looking at it from his point of view, there is this huge immense sea of things to learn about computer science. Experienced guys know that learning different computing languages is fairly easy (and useful!) once you grasp one or two pretty well, but to somebody who hasn't had that experience yet it's probably like being told that learning Italian fluently is a perfectly fine path into becoming a French translator. It's just not intuitive, and if I were young I'd be worried I was going down a path that didn't lead toward my goal as well.

As others have said, GraySnakeGenocide, C# is a fine way to learn to make games. I learned to program games in QBasic originally, which is MUCH further from C++ than C# is, and I made it into industry okay. You will need to learn C++ at some point, but it will actually be much easier to do once you are comfortable with a friendlier language like C#.

Share this post


Link to post
Share on other sites
There are many programmers on a team, doing many different tasks. The engine guys use C++. Other guys on the team doing the gameplay scenarios, or whatever else, mostly use a variety of scripting languages.

Share this post


Link to post
Share on other sites
Quote:
Original post by Daaark
There are many programmers on a team, doing many different tasks. The engine guys use C++. Other guys on the team doing the gameplay scenarios, or whatever else, mostly use a variety of scripting languages.
That depends on the company.
I've worked at one where the engine programmers used C but the gameplay coders used C++, and another where everything was C, and another where everything was C++, and another where the enigne was C++ but the gamplay in Lua, etc...

Share this post


Link to post
Share on other sites
Don't mind Tom, he's just the resident grumpy old man. If you translate his attitude, he means that it's worth the effort you're putting in. or he's just missing the point that you're unsure about the path to becoming a programmer...

[Edited by - Hodgman on December 1, 2010 3:42:44 AM]

Share this post


Link to post
Share on other sites
Quote:
Original post by GraySnakeGenocide
I'm saying if I were to work for a company that makes multiplatform games.

That means this is a Breaking In post. Moving.
Quote:
Where do you get off calling me lazy? Having trouble learning a language does not make one lazy.

No. But saying
Quote:
I just hope i'm not wasting my time
does. You really ought to read FAQ 51, and I recommend that you take the time to learn the stuff that wiser people tell you you ought to learn.

Share this post


Link to post
Share on other sites
C# is a great language and is also used by the Unity game engine, so there are ways forward without learning C++, which is a dated language. I'm not sure why you'd actually want to work in the industry, it's known for low pay and overworking.

If you want to work for yourself or with friends, C# / XNA / Unity is a viable option, and regardless, many companies (Blizzard to name one of them) use C# to make tools (level editors etc). Also, if you decide you need a regular programming job to finance your desires to make a game and not be a slave to big corps, then C# is one of the main languages used to make apps these days. So learning C# is not a waste of time.

Share this post


Link to post
Share on other sites
Quote:
Original post by Hodgman
That depends on the company. I've worked at one where the engine programmers used C but the gameplay coders used C++, and another where everything was C, and another where everything was C++, and another where the enigne was C++ but the gamplay in Lua, etc...
I know. It's different everywhere, but

C++ Engine
Scripting language Gameplay

is a very common paradigm and it has been for decades. Writing game code in C++ or C doesn't seem like such a good idea once your project gets to be a certain size. Having the behavior as data files that can be replaced at runtime, or replaced without a recompile is very convenient.

Everyone always talks about how certain high performance, AAA games were written in C++, but neglect to mention that the gameplay, logic, AI, etc, portions were all written in various scripting languages.

The problem solving capability is more important then the language. Especially now that gaming is moving towards mobile devices that all have their own language set ups. You will pick up whatever language you need to use as you go along.

Share this post


Link to post
Share on other sites
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.

Share this post


Link to post
Share on other sites
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.

Share this post


Link to post
Share on other sites
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.

Share this post


Link to post
Share on other sites
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.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this