-
|
|
|
Ok, this maybe not a very fair question or there may be not much of a comparison to be made, but as a (hopefully) future game dev, I was wondering how developing with XNA compares with the development of AAA 360 titles. The reason I ask is because, after looking through the code of the game that is on the UDK site (unreal engine) the code looks, well, sooo much more simple (less technical) than what XNA uses to do things. While I realize XNA is not an engine, I'm not really directly comparing XNA and the UDK. If the unreal engine is what a lot of AAA titles use, is the UDK code what those titles are usually like to make? Or is the unreal engine a "bad" example of what you might see when getting a job in the industry making an AAA title? I guess what I'm asking is: Are XNA, UDK, or neither what you would be doing if you were a programmer on one of those big titles? I ask this because, I'm not trying to use XNA to make games just to sell, I'm using it to get more experienced in developing games. I'm sorry this is so confusing, but if anyone can make sense of what I'm asking, i would appreciate your answer.
|
|
-
|
|
|
If you want to be a programmer in the games industry, then you must learn how to program. To program XNA framework based games you need to learn C#, some .Net and the XNA framework API. So that is real programming experience. I can't comment on UDK - never used it.
Game hobbyist hell-bent on coding a diabolical Matrix
|
|
-
-
- (2330)
-
premium membership
MVP
-
Posts
1,220
|
|
The code that comes in the UDK is actually UnrealScript...this code is interpreted by the engine and typically contains all of the gameplay logic. When a big commercial dev studio licenses Unreal Engine 3 they don't just get the editor and tools, they get all of the (native C++) source code to the engine as well. Many of them will highly customize this engine code to get the results they want. Making a game with the UDK is much more akin to making a mod for an Unreal Engine 3 game, like Unreal Tournament 3. In fact the only major difference (that I know of so far) between modding UT3 and making a game with the UDK is that if you want you could sell a game made with the UDK (with royalties paid to epic, of course). It's actually a pretty neat prospect for small indie teams or modding teams to make some money.
All of of these scenarios (using UTK, licensing UE3, modding UT3) are very very different from working with the XNA Framework. The framework doesn't give you rendering engines, physics engines, map editors, or anything like that...it instead provides libraries that you could use to create those things. So basically you'd work on the lower-level building blocks first (these things are already part of an engine like UE3), and then later write the gameplay logic for an actual game.
Matt Pettineo | DirectX/XNA MVP Ride into The Danger Zone | PIX With XNA Tutorial
|
|
-
-
- (375)
-
premium membership
-
Posts
436
|
|
It really isn't quite that simple... Although I haven't picked up the UDK myself, I suspect it would only help you towards a scripting role.
Games programmers can be very crudely categorised into two types: scripters, that use easier to program languages (such as LUA), and 'engine' programmers that work at a much lower level in C++. If you want to be more of a level designer you might want to look at the former, or if you are more technical then the latter. Engine programmers then tend to specialise by area (graphics, audio, physics etc). You will also find tools developers (C++ and C#) and build engineers (e.g. Python, but could be almost anything in reality).
There would be nothing wrong with using XNA to start learning all of these skills, so long as you make sure you also pick up the languages actually used at some point.
|
|
-
|
|
|
CosmicFlux:
If you want to be more of a level designer you might want to look at the former, or if you are more technical then the latter.
So what you're saying is that XNA is a good thing to be learning, but would C++ be more helpful when becoming a programmer? Thanks for all the great replies everyone.
|
|
-
|
|
|
If you want to get into the game industry, then you must know C++. It is the game industry standard. Of course they use other languages and tools as well, but you must know C++.
|
|
-
-
- (20352)
-
premium membership
MVP
-
Posts
12,388
|
|
If you want a job right now with a AAA game publisher working on the main game engine then you will need C++ experience to even get an interview.
If
- you are not looking for a job for 3-10 years because you are in school
- you want to work on smaller indie games or web games
- you are happy to test, create levels, write tools
Then C++ is rarely relevant... e.g. web games are 99% flash, tools will be written in whatever people like to get a product done (I'm assured by the XNA team that many AAA houses use XNA for prototyping and tools)
So if you are just learning then don't start with C++ - there's no many better ways to get going and if you learn faster you won't get so disappointed. If it turns out you are a good programmer then you won't have any trouble learning C++ later.
Play Kissy Poo - a game for 4 year olds on Xbox and windows The ZBuffer News and information for XNA Follow The Zman on twitter, Email me Please read the forum FAQs - Bug/Feature reporting Don't forget to mark good answers and good playtest feedback when you see it!!!
|
|
-
-
- (1223)
-
premium membership
-
Posts
342
|
|
A great place to start...
Check out BlitzBasic (based on the BASIC language) located in my signature.
If you can hack that, (understand it, use it) then you're on your way. C, C++, C#, Java, whatever, is just another step...
If you can't , you might take a look at waitressing...
Frighten your friends and family with: Scare MeHelp customers using GRENADES?!?: GoonyCru: Day One BASIC Programming Tutorial
|
|
-
-
- (375)
-
premium membership
-
Posts
436
|
|
tdk08: CosmicFlux:
If you want to be more of a level designer you might want to look at the former, or if you are more technical then the latter.
So what you're saying is that XNA is a good thing to be learning, but would C++ be more helpful when becoming a programmer? Thanks for all the great replies everyone.
If you want to do graphics engine programming and don't think you can do C++ off the blocks, XNA would be a slightly easier way to get started. You will however need excellent (3 years minimum) C++ to be let anywhere near a game engine.
If you don't think you can / want to do engine programming, and want to aim for for a level designer position, working with the scripting langauge of a pre-built engine would be better.
If you want useful careers advice you would probably be best posting details of your current skill set, age, education etc.
|
|
-
-
- (972)
-
premium membership
-
Posts
169
|
|
|
|
-
|
|
|
I think what I would want to do is graphics/engine programming eventually, the level design part is definitely not what I want to do, right now I'm still in HS (junior) and the only classes I've taken related to this is the java CS class I'm taking now. I've been doing programming on my own though for a while. I feel like it's hard to pinpoint exactly what area in game dev I like the best right now. Basically the reason I chose to start with XNA (well, I really started with iPhone programming and got pretty far into it) is because, if I made a game that was decent, I would be able to put it out on XBL. That's the same reason I chose iPhone programming at first. I knew that C++ is generally what is used for professional games, but I guess I avoided it because there wouldn't be any real pay off like selling a game I made. (not that I'm only in this to make money right now, but if I could, I would lean towards doing that)
|
|
-
-
- (472)
-
premium membership
-
Posts
131
|
|
c# Is a good language to learn so XNA would be a good platform to learn it on if your going to go towards a carreer in programming games. Personally I've done C# for about 2 years. And I've been learning C++ for a year.
I think I've taken on board a lot of good general practice from working with C# and learning it will help you towards C++ which a lot more of an untrained animal than C#. .
Unreal is written almost entirely in Uscript as far as the game play is concerned (it's a very similar syntax to C if you've not seen it before) however all the underlying code is C++ and most major game companies will edit at least some part of the underlying engine before begiining to work over the top of it.
Playing around with XNA would also be a good thing as I see you mention that you are currently doing Java. C# is actually quite syntaxually similar to Java so its a language you may take to easier than most.
Good Luck
|
|
-
-
- (375)
-
premium membership
-
Posts
436
|
|
tdk08:I think what I would want to do is graphics/engine programming eventually, the level design part is definitely not what I want to do, right now I'm still in HS (junior) and the only classes I've taken related to this is the java CS class I'm taking now. I've been doing programming on my own though for a while. I feel like it's hard to pinpoint exactly what area in game dev I like the best right now. Basically the reason I chose to start with XNA (well, I really started with iPhone programming and got pretty far into it) is because, if I made a game that was decent, I would be able to put it out on XBL. That's the same reason I chose iPhone programming at first. I knew that C++ is generally what is used for professional games, but I guess I avoided it because there wouldn't be any real pay off like selling a game I made. (not that I'm only in this to make money right now, but if I could, I would lean towards doing that)
I'd go the XNA route if you want to end up doing engine development - all the skills are transferable, and moving on to C++ shouldn't be that hard (you'll just learn what an ugly hack C++ is on top of C...). It will also be a lot more fun than using C++ and DirectX.
|
|
-
|
|
|
CosmicFlux:all the skills are transferable
Once you learn one OO language, learning another is just syntax ;)
|
|
-
|
|
|
CosmicFlux: tdk08:I think what I would want to do is graphics/engine programming eventually, the level design part is definitely not what I want to do, right now I'm still in HS (junior) and the only classes I've taken related to this is the java CS class I'm taking now. I've been doing programming on my own though for a while. I feel like it's hard to pinpoint exactly what area in game dev I like the best right now. Basically the reason I chose to start with XNA (well, I really started with iPhone programming and got pretty far into it) is because, if I made a game that was decent, I would be able to put it out on XBL. That's the same reason I chose iPhone programming at first. I knew that C++ is generally what is used for professional games, but I guess I avoided it because there wouldn't be any real pay off like selling a game I made. (not that I'm only in this to make money right now, but if I could, I would lean towards doing that)
I'd go the XNA route if you want to end up doing engine development - all the skills are transferable, and moving on to C++ shouldn't be that hard (you'll just learn what an ugly hack C++ is on top of C...). It will also be a lot more fun than using C++ and DirectX.
how is it a hack, maybe when it first was developed but it's come a long way since then.
BShields: CosmicFlux:all the skills are transferable
Once you learn one OO language, learning another is just syntax ;)
Well it's a bit more then that, since one language might implement something that the other language does not. For example the out parameter has no direct equivalent in java.
|
|
-
-
- (375)
-
premium membership
-
Posts
436
|
|
Corey S:how is it a hack, maybe when it first was developed but it's come a long way since then. Just my opinion - the implementation might have improved, but nowadays I doubt anyone would design a language like that from scratch. For a start there are far too many rules you have to remember to make sure your code runs properly; ever accidentally left a destructor non-virtual in a polymorphic class? Gang-of-three rule? Forward declaration? Having to define inlined methods in the header file?. Lets just say you can tell the language is rooted in 1972... :) Corey S: BShields: CosmicFlux:all the skills are transferable
Once you learn one OO language, learning another is just syntax ;)
Well it's a bit more then that, since one language might implement something that the other language does not. For example the out parameter has no direct equivalent in java.
It took me less than a working day to teach myself the syntax, semantics and runtime aspects of C#, the same for Java and Objective-C. The same can't be said for C++, but C# would be a huge step towards that goal.
|
|
-
|
|
|
No, nowadays they wouldn't design it like that from scratch. Case in point: C#
C++ is C with classes. The designer had two primary design goals.
1. Add classes to the C language without changing the language semantics.
2. Guarantee it will still compile and run all the billions of lines of existing C code out there.
These goals obviously constrained the design of C++ and creators of a new language nowadays wouldn't choose those constraints.
The ++ part of C++ was initially concieved purely as an OOD add-on to the C language. Over the years, real-world pressures have caused the implementation to vary from that initial purity somewhat.
Game hobbyist hell-bent on coding a diabolical Matrix
|
|
-
-
- (472)
-
premium membership
-
Posts
131
|
|
Although C++ is still the front runner though i'd still recommend any really really new programmer to at least look at plain old C. I find it can be useful to know some of the lower level things that give you a better understanding of C++.
Also C is still by no means a dead language in it's own right. I seem the remember the compilers we're currently using at university for the PSP only accept C without some serious tweaking.
|
|
|