Sign in to follow this  
Followers 0

55 posts in this topic

XNA and SharpDX have totally different goals. The purpose of XNA is to provide a complete game development framework including asset management, networking, deployment, etc., for students and hobbyists, and abstract away the hardware differences between platforms as much as possible. The purpose of SharpDX is only to provide a fast managed wrapper around DirectX: it's every bit as complex and powerful as the original API, and yet it doesn't cover half the scope of what XNA does.

So, they different tools serving different purposes. That XNA uses Direct3D 9 under the cover is not much of an issue to its target users. Plus that will all change as the open-source MonoGame implementation will use SharpDX to support Windows 8.

What networking does XNA offer beside Game for Windows Live, which was a short-lived cancer and thankfully, has almost completely passed away?

Yes, XNA simplifies things a little. I used it for my degree project and it was nice. But other than the content pipelines, it really has little purpose. If you want to focus on content creation, use a made engine such as Unity or UDK. If you wish to learn engine development, invest the [little] extra time and learn a more encompassing framework. In the long run, the so called advantages of XNA are minor and unimportant.

I used XNA because when I was developing my project, I wanted to use C# and there were only XNA and Managed DX, and the latter was a mess.

Share this post


Link to post
Share on other sites

From a beginner's perspective, XNA is way easier: you can jump straight into your game-specific, there's no creating a window, acquiring a device, setting up buffers, writing an update/draw loop, loading assets; you new up a SpriteBatch and tell it where to render your sprites and that's it. Also, unlike SharpDX, XNA is platform-agnostic: it has already been succesfully ported to OpenGL mobile devices and soon it'll run under DX11 in Windows 8; SharpDX ties you to a specific API and you'll have to perform any porting manually.

Share this post


Link to post
Share on other sites

Learn C++ first, but you also need to know C#. C# is not only great for coding tools, but engines that support it offer a great way to compile once and deploy to multiple platforms.

Share this post


Link to post
Share on other sites

Learn C++ first, but you also need to know C#. C# is not only great for coding tools, but engines that support it offer a great way to compile once and deploy to multiple platforms.

Yep! That's my plan.

This is just such a polarizing issue, I figured it would be interesting to see the varying opinions. I really like the C++ -> C# route now. :)

Share this post


Link to post
Share on other sites

2D? I'd start Python + pygame or Flash or a game building front end. There would be much less for you to learn while getting started.

Personally I would look at what games you enjoy were written in, as a short list of 2D platformers:

VVVVVV: Flash

Super Meat Boy: Flash (then rewritten in C++)

Spelunky: Game Maker

Cave Story: looks like C++

Castle Crashers: Flash and C++

Terraria: C# using XNA

Angry Birds: C++

Share this post


Link to post
Share on other sites

I agree with you Dr_Asik. Honestly, I found that giving advice to start with C++ is a bad idea. A lot of people do not want to deal with not only the stuff you just mentioned, but they also do not want to worry about memory management themselves as a first step in programming.

My advice? I would go for Java or C#/XNA. I would not worry about multi-platform at this stage (though there is Mono and MonoGame for C#/XNA). You will not be building Crysis 3 as your first game so either one of those languages will be more than enough power to fit your needs.

I am personally going to stick with C#/XNA for a while. Why? XP and 7 will still be top dogs for a while, and it still works in Windows 8 in desktop mode. I am a 2D game programmer so XNA is more than powerful enough for me.

If you want to make a career out of this, the probability that it will be C++ is very high. But programming is programming. Start with an easier language to get you in the mindset of programming and how to implement algorithms and game related functions. Then you will just have to deal with the complexities of C++ later when you move to it.

Share this post


Link to post
Share on other sites

I would stay away from Java. When security companies are actively telling people to uninstall Java, there's a problem. Plus the language is pretty crappy.

Share this post


Link to post
Share on other sites

From a beginner's perspective, XNA is way easier: you can jump straight into your game-specific, there's no creating a window, acquiring a device, setting up buffers, writing an update/draw loop, loading assets; you new up a SpriteBatch and tell it where to render your sprites and that's it. Also, unlike SharpDX, XNA is platform-agnostic: it has already been succesfully ported to OpenGL mobile devices and soon it'll run under DX11 in Windows 8; SharpDX ties you to a specific API and you'll have to perform any porting manually.

Are you talking about 2D? Because I don't see how tha would work with 3D. You'd have to rewrite your shaders; other differences also prevent even higher code from being shared. Even content cooking wouldn't work unless Mono developers ported everything to OpenGL and created 3D model and audio loading facilities into their implementation, which I doubt.

Share this post


Link to post
Share on other sites

Are you talking about 2D? Because I don't see how tha would work with 3D. You'd have to rewrite your shaders; other differences also prevent even higher code from being shared. Even content cooking wouldn't work unless Mono developers ported everything to OpenGL and created 3D model and audio loading facilities into their implementation, which I doubt.

This isn't finalized but right now they convert HLSL to GLSL and they rely on XNA's content pipeline to build the content. I'm not too savvy about how they do it and what the ultimate plans are.

Share this post


Link to post
Share on other sites

2D? I'd start Python + pygame or Flash or a game building front end. There would be much less for you to learn while getting started.

Worst advice ever, all programmers need to start off with C/C++ because if you know C you can learn anything from there on out.

Share this post


Link to post
Share on other sites

Worst advice ever, all programmers need to start off with C/C++ because if you know C you can learn anything from there on out.

No not all programmers need to start with C/C++. They should start with a language that is easier than that. My path was with Visual Basic -> Java -> C++ -> C# -> Python. The worst advice I have ever given people is to start with C/C++.

Share this post


Link to post
Share on other sites

A quick question - is XNA dead?

Share this post


Link to post
Share on other sites

2D? I'd start Python + pygame or Flash or a game building front end. There would be much less for you to learn while getting started.

+1 for Python / pygame. It's easy to pick up, fun, and quite powerful. It also runs on just about every platform.

Share this post


Link to post
Share on other sites

Worst advice ever, all programmers need to start off with C/C++ because if you know C you can learn anything from there on out.

Well, the learning curve for C++ is pretty steep, and it's not a particularly good language anyway. C is much easier to learn, so I agree that it can be helpful.

As far as Python is concerned, it's good for getting something up and running quickly, especially with an interpreter you can run live code in for testing purposes. I'd actually recommend learning both C and Python. C forces a programmer to learn real programming, instead of relying on sprawling, opaque libraries to do the work for them. It's also simple to learn due to the small std library and small number of keywords / syntactic constructions. Python allows one to operate on more modern OO and language concepts.

Share this post


Link to post
Share on other sites

Just adding that you can do a fair amount of 2D programming with just javascript and canvas these days.

Share this post


Link to post
Share on other sites

A quick question - is XNA dead?

No, it is still used for XBLA, XBoX and Windows game development. MS Hasn't released a new XNA Framework in a while, but it may just not need any critical updates.

Share this post


Link to post
Share on other sites

Don't limit yourself with XNA. Check out Unity. It's free, lets you program using C# or Javascript(not java), can compile to run on most systems, to include Android, iOS, Xbox, Windows, Mac, etc. There are tons of guides online for it. The list of games made with it is pretty impressive. Zombieville USA, which I played on iOS and was a well put together side scroller, was made with only two people.

https://www.youtube....h?v=pvfVDczQXOY - Zombileville USA game play.

https://www.youtube....feature=related - Zombieville USA 2

http://unity3d.com/g...unity/game-list

Share this post


Link to post
Share on other sites

A quick question - is XNA dead?

I never understand why people panic (I am not saying you are, I just had to deal with a lot of developers who were in a panic because they were in the middle of development of a large project) and think a framework can be dead. I had to respond to a lot of emails and worried developers about this. And they always say a blog post said XNA was dead or an article somewhere. Here is the response I usually give:

Do not be worried about using XNA. One of the biggest indie games ever was made in Java (Minecraft), which probably has less support than XNA (especially for 3D stuff). If XNA is more than enough for your needs, you do not need to be worried about using it.

Also, with XNA right now, you can make the game for Windows XP, Vista, 7, and yes 8 in Desktop mode. You also get Xbox 360 and WP. I do not use it on the phone, but I heard it is supported on WP8. Once you build it for one of those to create the XNB files (for your assets), you can use MonoGame for cross platform. I honestly think it is way too soon to jump ship and only focus on one Operating System (Metro apps) and the phone. On the flip side, now might be the best time to develop for the new apps on Windows 8. But you can develop for XNA for a desktop program, then use MonoGame to make a metro version of it.

We have not heard anything one way or another. Metro/Modern uses Direct X 11, XNA is Direct X 9 (they only took state object designs from DX 10/11 according to Shawn Hargreaves). Likewise, Xbox 360 is only DirectX 9, which is what XNA is primarily used for. We do not know if they are making a new XNA for DirectX 11 to go along with a new Xbox (which will require some time) or if they will abandon it. Why dedicate resources to make an XNA version with a new DirectX when we still have the Xbox 360? Plus supporting both types would be a nightmare. They are probably waiting until the next Xbox to perform such an upgrade to XNA. This is entirely possible. It is just as possible that they will not. But a framework can only be dead if Microsoft stops providing download links for it. I assume they will let the download live for years. You can still download XNA 1.0. Since MS seems to be focusing a lot on C++, they might make the next XNA (if there is one) C++, which will require even more time to develop. I would love that!

How is it considered dead but you can still write Windows 8 desktop programs with it? Even if 4.0 is the last XNA version, it is still a decent gaming framework that will work on the latest almost-released Operating System in the desktop environment. It could PROBABLY work on Windows 9 too, but we will see when we get there what MS decides to do. You have a lot of target audiences that way.

Unity is good too, I personally prefer XNA over unity because I do not get much time to develop, but if I did I would use Unity.

Even though a lot of hate is toward Java now, I still think it is a good learning language. If you install Java, just disable support for it in your browser (NOT Javascript, but Java).

I would avoid Visual Basic. The syntax still annoys me to this day...

Finally, I would go with C/C++ (if you want to) after you learn the basics and use an easier language to begin with.

Share this post


Link to post
Share on other sites

Leaves multi-platform out of the question? Dude, XNA is the only way to make indie games for a game console, (in this case the Xbox 360,) without hacking the console, & it works with a lot of other platforms too! (Windows, Windows Phone, & the Zune. Of course, the Zune is for older versions of XNA & Windows Phone is for newer versions, but, still...)

Share this post


Link to post
Share on other sites

Leaves multi-platform out of the question? Dude, XNA is the only way to make indie games for a game console, (in this case the Xbox 360,) without hacking the console, & it works with a lot of other platforms too! (Windows, Windows Phone, & the Zune. Of course, the Zune is for older versions of XNA & Windows Phone is for newer versions, but, still...)

Should say... leaves anything not Microsoft out of the equation (though there is MonoGame)

Share this post


Link to post
Share on other sites

The number of people blindly recommending C++ is frighting. If you're not going to be making AAA titles, and you don't require massive performance, then there is almost no reason what so ever to learn and use C++.

If you are SERIOUSLY considering making a game, C++ is the way to go. The power is almost limitless....

Performance wise, Java and C# are going to be close

I HOPE that this is a joke. Performance wise, C# (in fact nearly any .NET language) kicks Java's ass. Excuse me; almost ANYTHING kick's Java's ass in performance.

I know this because I devlop in Java; It is the most disgusting slowest memory hogging piece of **** ever created. Multiplatform? Yes. Of course. Is it worth it? Hell ****ing no. The thing that most ****es me off is that there has been 17 years to improve it and STILL the performance is horrible. And Im not even going to start on the security portion.

No not all programmers need to start with C/C++.

I completely disagree. C is almost mandatory to at LEAST have coded in ONCE. Even as a school project. Even as agenda that stores a person and certain attributes such as name, numer, etc. It shows so many low level concepts on programming that nowadays with IDEs using mostly OOP (C#, Java, even C++) that you lose core fundamentals.

They should start with a language that is easier than that.

I again disagree with your opinion. Its easier to start from a hard language © then work your way to a easy language (VB.NET)

My path was with Visual Basic -> Java -> C++ -> C# -> Python. The worst advice I have ever given people is to start with C/C++.

Wow you started with two of the most easiest and horrible languages. The only thing C++ has in common is that it is OOP.

Bottom line: If you want to make a serious game, C++ without a doubt. Serious as in you want it to get noticed and hell, even sell a few copies. That being said, like many had said, there is a learning curve

If you want to start with game development and make a simple cheesy game, C#. Development will be quicker and the learning curve is basically null

Share this post


Link to post
Share on other sites

Bottom line: If you want to make a serious game, C++ without a doubt. Serious as in you want it to get noticed and hell, even sell a few copies. That being said, like many had said, there is a learning curve

If you want to start with game development and make a simple cheesy game, C#. Development will be quicker and the learning curve is basically null

I whole heartedly disagree with this statement, particularly the part about selling a few copies. There are numerous, successful game developers who have sold games written in something other than C++. And, further to the point, there are those that have gotten their start in languages beyond C++.

I stand firmly with my belief that starting with something like AS3, which is still OO, and doesn't have the added complication of managing memory is the place to start.

Share this post


Link to post
Share on other sites
If you want to start with game development and make a simple cheesy game, C#. Development will be quicker and the learning curve is basically null

I disagree wholeheartedly. The game I'm developing in C# is nothing close to cheesy. It runs on multiple operating systems, such as Linux and Windows, is not slow* (I can run it on a netbook with an Atom processor and ION graphics at 30 FPS), and it was written in a fraction of the time it would take to write in C++. Your post reminds me of how far technology has come; we aren't reliant on writing assembly software rendering routines anymore. Computers are more powerful and hence I can spend less time pulling my hair out over C++ "features" and more time programming a solid game.

Just to point out, my game features resolution independent vector graphics. The framework I built is component based, and thanks to the power of the .NET framework, I am able to generate entire levels using reflection. I admit, given more time and resources, I very well could develop it in C++...but that's it! I don't have the time or resources! And most hobbyist game developers don't either.

*: By slow, I mean C# is not the limiting resource. It's the graphics card.

Share this post


Link to post
Share on other sites

I'm not a game developer but... why not a mix of C/C++ and python? C for the stuff that needs to be done quickly, and python for the stuff that can be tweaked/used to mod?

Share this post


Link to post
Share on other sites

I'm not a game developer but... why not a mix of C/C++ and python? C for the stuff that needs to be done quickly, and python for the stuff that can be tweaked/used to mod?

For a PC game that might make sense, but not for a game that has to run on a mobile platform or console.

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  
Followers 0

  • Recently Browsing   0 members

    No registered users viewing this page.