XNA/SlimDx questions

Started by
16 comments, last by watermelonChris 12 years, 8 months ago
Hey guys,,

So Ive been using XNA for a little while now and I must say its really nice coming from using Java. I am really mostly interested in 2D for games, but I really want to mess around with graphics programming as well. Since I dont plan on doing any Xbox/Windows Phone stuff, does it make sense for me to use SlimDX instead of XNA? From what I can tell, XNA is not just a simple wrapper around Direct3D for C#, but it completely covers up the Direct3D calls. Would it make sense for me to do my game development and graphics dabbling in SlimDX instead, so that I could use generic DirectX books and resources and easily apply them?

Im not really too concerned about the fact that XNA doesnt use the latest DirectX version, my concern is more about being able to use true Direct3D. The alternative to this, it to keep using XNA for my game development, and use normal C++/ Pure DirectX to learn 3D graphics programming. This is an option, but to me its just more of a hassle to use two different languages and technologies. If SlimDX is similar to XNA as far as 2D game capabilities, and also fully exposes the Direct3d API... it seems like it would make more sense to kill two birds with one language/API :) Any thoughts? I really do like XNA... but I want to be able to learn true Direct3D as well.
Never, ever stop learning.
- Me
Advertisement

Hey guys,,

So Ive been using XNA for a little while now and I must say its really nice coming from using Java. I am really mostly interested in 2D for games, but I really want to mess around with graphics programming as well. Since I dont plan on doing any Xbox/Windows Phone stuff, does it make sense for me to use SlimDX instead of XNA? From what I can tell, XNA is not just a simple wrapper around Direct3D for C#, but it completely covers up the Direct3D calls. Would it make sense for me to do my game development and graphics dabbling in SlimDX instead, so that I could use generic DirectX books and resources and easily apply them?

Im not really too concerned about the fact that XNA doesnt use the latest DirectX version, my concern is more about being able to use true Direct3D. The alternative to this, it to keep using XNA for my game development, and use normal C++/ Pure DirectX to learn 3D graphics programming. This is an option, but to me its just more of a hassle to use two different languages and technologies. If SlimDX is similar to XNA as far as 2D game capabilities, and also fully exposes the Direct3d API... it seems like it would make more sense to kill two birds with one language/API :) Any thoughts? I really do like XNA... but I want to be able to learn true Direct3D as well.


Dude I find 3D with XNA hard enough... Don't you think it'd be easier to continue C# + XNA and learn more about 'game logic' without too much technicality slowing you down?
And then when your comfortable go on to C++ + DirectX?

[quote name='Joe P' timestamp='1312824540' post='4846268']
Hey guys,,

So Ive been using XNA for a little while now and I must say its really nice coming from using Java. I am really mostly interested in 2D for games, but I really want to mess around with graphics programming as well. Since I dont plan on doing any Xbox/Windows Phone stuff, does it make sense for me to use SlimDX instead of XNA? From what I can tell, XNA is not just a simple wrapper around Direct3D for C#, but it completely covers up the Direct3D calls. Would it make sense for me to do my game development and graphics dabbling in SlimDX instead, so that I could use generic DirectX books and resources and easily apply them?

Im not really too concerned about the fact that XNA doesnt use the latest DirectX version, my concern is more about being able to use true Direct3D. The alternative to this, it to keep using XNA for my game development, and use normal C++/ Pure DirectX to learn 3D graphics programming. This is an option, but to me its just more of a hassle to use two different languages and technologies. If SlimDX is similar to XNA as far as 2D game capabilities, and also fully exposes the Direct3d API... it seems like it would make more sense to kill two birds with one language/API :) Any thoughts? I really do like XNA... but I want to be able to learn true Direct3D as well.


Dude I find 3D with XNA hard enough... Don't you think it'd be easier to continue C# + XNA and learn more about 'game logic' without too much technicality slowing you down?
And then when your comfortable go on to C++ + DirectX?
[/quote]

That definitely makes sense. The thing is though, Im really not extremely interested in 3D for games right now. I wont really be concerned with "game logic" while doing 3D programming. I really enjoy 2D game development. I wanted to lean DirectX as more of a fun thing to do... you know. learn to write shaders, ligthing, etc, not related directly to games. I am kind of thinking about game development and 3D graphics programming as two totally separate things. Sure I might move on and use 3D in personal game projects eventually, but right now I kind of just want to mess with low level graphics engine stuff... and create some tech demo sort of applications. I figured that if Im really trying to learn graphics for graphics sake, and not for specific use in a game, it would make sense to use pure DirectX versus going through a game centered library like XNA. Basically I am wondering if I do mess with 3D in XNA, would any of the skills translate over to pure DirectX, or is it basically an entirely different beast? Obviously XNA uses DirectX, but that doesnt mean you will learn DirectX while using it. I mean, Unity3D uses OpenGL, but you wont learn a damn bit of OpenGL with it. :)
Never, ever stop learning.
- Me
Hmmmmm I'd learn them both at the same time then personally (since you'd be doing 2 separate things).. So that's C# + XNA and C++ + DirectX..
As far as how much you learn from XNA that can be applied to DirectX I'm not sure...

Hmmmmm I'd learn them both at the same time then personally (since you'd be doing 2 separate things).. So that's C# + XNA and C++ + DirectX..
As far as how much you learn from XNA that can be applied to DirectX I'm not sure...


You see, thats my dilemma :) For pure 2D game development, XNA is just perfect for me... and I really have no reason to go to something like SlimDX as it really wont give me any advantage in that regard. As for creating 3D graphical applications and writing tech though, I thought it might not be the best idea to do it through XNA, although it is certainly possible. I am possibly considering trying to spend the next few years doing graphics and potentially looking for a job in it, and because of this.... I thought it would be best to get closer to true Direct3D. Thats why I considered SlimDX, it would allow me to use C# (which I prefer over C++) for 3D graphics, it would allow me get a similar feel to XNA as far as my 2D games go (at least I think this is true, although from what I can tell SlimDX doesnt really help with game stuff like XNA does), it would allow me to learn actual Direct3D programming instead of XNA's wrap around it. So basically I could use the same language/API for both 2D game development and 3D graphics programming on the lower level. From what I can tell, using SlimDX and C# would easily translate to using pure DX and C++ later on... if I wanted to get a job in the field for instance.

Simply, if I want to pursue graphics programming seriously, I feel like doing it through XNA is probably not the best idea. I dont want a career in game development, so Ill use whatever I like the best for that because no one is judging me on it.. But graphics have always been extremely interesting to me, and I have done some openGL programming in the past and really enjoyed it, so I feel like it is a possible choice for an actual career. So learning a true graphics API seems like it makes sense.I just dont think I am prepared to deal with both C#/XNA and C++/DX simultaneously... I would rather focus.
Never, ever stop learning.
- Me
Game development and computer graphics are two worlds that happen to intersect very heavily, but they are different worlds. You simply have to figure out what you want. Things aren't that complicated.

If you want to make games, use XNA. XNA is for making games.

If you want to learn rasterizing-based real-time commercial computer graphics, use D3D or OpenGL. You don't need to write games to learn this realtime rendering techniques, and in fact slogging away at a game can hamper your progress. Writing a game involves loads of tedium that for the most part isn't instructive.

You want a career in game development, but what sort of career do you want? If you want to be a gameplay programmer, then you want to show gameplay. I personally feel that you shouldn't even be writing whole games; it's a waste of time. I think you're better served by finished, polished demos of gameplay techniques that show you've acquired mastery over them. But whether you choose to create demos or whole games, you could use XNA if you want to go C++ heavy or something like Unity3D if you truly want to focus on showcasing your implementation of gameplay-related algorithms.

If you want to be a graphics programmer, same thing. Don't write games, it's a waste of time. Show mastery of techniques with polished demos.

If you just want to make games as a hobby, then do whatever's fun.

Game development and computer graphics are two worlds that happen to intersect very heavily, but they are different worlds. You simply have to figure out what you want. Things aren't that complicated.

If you want to make games, use XNA. XNA is for making games.

If you want to learn rasterizing-based real-time commercial computer graphics, use D3D or OpenGL. You don't need to write games to learn this realtime rendering techniques, and in fact slogging away at a game can hamper your progress. Writing a game involves loads of tedium that for the most part isn't instructive.

You want a career in game development, but what sort of career do you want? If you want to be a gameplay programmer, then you want to show gameplay. I personally feel that you shouldn't even be writing whole games; it's a waste of time. I think you're better served by finished, polished demos of gameplay techniques that show you've acquired mastery over them. But whether you choose to create demos or whole games, you could use XNA if you want to go C++ heavy or something like Unity3D if you truly want to focus on showcasing your implementation of gameplay-related algorithms.

If you want to be a graphics programmer, same thing. Don't write games, it's a waste of time. Show mastery of techniques with polished demos.

If you just want to make games as a hobby, then do whatever's fun.


Well I said in the above post.. I DONT want a career in game development. It is and always will be a hobby of mine... nothing more. Graphics on the other hand have many other applications beyond game programming, and I really think that is a solid career choice for me. I do want to be a graphics programmer, but I am not going to stop writing games completely. Sure I am going to have to take a ton of time away from writing games to focus on graphics and get really good, but Im not going to totally stop. I write my games for my own enjoyment and if anybody else enjoys them... well thats a bonus.

I want to take graphics programming seriously and find out if it is truly something I can see myself doing for a living.This isnt a question of whether I should make games or program graphics. I know I will continue to write games in my spare time regardless of my day job. I just think its time for me to focus in on a specific area of computing that interests me and I can have a job in some day. In the bit of OpenGl that Ive done so far, I really enjoyed. Also, it doesnt hurt that the graphics skills can help boost my hobby of writing games.

Saying that writing games is a "waste of time" if I want to be a graphics programmer is silly. I agree, writing games is not the road to being a good graphics programmer, but Im not using it as that. they are two totally separate goals of mine. I write games for fun and enjoyment. I dont think that It will make me a good graphics programmer. At the same time I need to have an actual career that I enjoy, and I want to have a crack at graphics because the field has interested me in the past. Bottom line, I want to be a full time graphics programmer, and a hobbyist game developer. There does not need to be any overlap of the two.
Never, ever stop learning.
- Me
Sorry, the part about you not wanting to enter game development as a career. Frankly, I think that's smart.

That's fine to do something as a hobby, I didn't mean to imply that you shouldn't.

If you really want to enter the computer graphics world in a way that's not bound to game programming, then you need to learn real theory rather than simply practical implementation. This is how you learn computer graphics as part of a Computer Science degree at a university: you learn the theory from the ground up, and it involves lots of math lots of topics that have absolutely zero to do with games.

Almost all non-game graphics work (even a lot of what comes out of Microsoft Research) is either in OpenGL (if they're doing realtime rasterized graphics) or it's done in software. So, regarding preparing yourself for that type of career, I don't think either XNA or D3D is a good choice.

Are you planning on going to school for this, or are you already in school? I ask because it's going to be very hard to enter a computer graphics-related career without a degree in Computer Science or some related field. That's even more true if you don't want to do games.
And Ke-Sen Huang's repository of past SIGGRAPH conference papers will eventually be invaluable to you.

Sorry, the part about you not wanting to enter game development as a career. Frankly, I think that's smart.

That's fine to do something as a hobby, I didn't mean to imply that you shouldn't.

If you really want to enter the computer graphics world in a way that's not bound to game programming, then you need to learn real theory rather than simply practical implementation. This is how you learn computer graphics as part of a Computer Science degree at a university: you learn the theory from the ground up, and it involves lots of math lots of topics that have absolutely zero to do with games.

Almost all non-game graphics work is either in OpenGL (if they're doing realtime rasterized graphics) or it's done in software. So, regarding preparing yourself for that type of career, I don't think either XNA or D3D is a good choice.

Are you planning on going to school for this, or are you already in school? I ask because it's going to be very hard to enter a computer graphics-related career without a degree in Computer Science or some related field. That's even more true if you don't want to do games.


Gotcha, just a misunderstanding. Games are fun to make and all, but to be honest... I know the reality of the field. I want to have a job that is both interesting, fun, and will not leave me poor :) I love writing 2D games, and I will always be up until 2am working on them. Working in a big game studio just doesnt appeal to me as a day job, I feel like I would enjoy writing graphics tech a lot more.

Ok back on topic. Yes I am in school... I am on my final year of my Bachelors in CS. My school doesnt have many graphics courses,,, although the one we do have I will be taking next semester. The only reason I considered using D3D is because since I am already using XNA for my hobby game stuff, I thought it would make sense to go graphics in D3D considering Im already sort of using it.

I have the linear algebra background as well, so I feel like I can grab onto the graphics stuff pretty well. Any more advice ?Are you thinking that it might make sense for me to just keep at XNA for my game stuff, but for serious learning about graphics... work on C++ and OpenGL?
Never, ever stop learning.
- Me

This topic is closed to new replies.

Advertisement