Alternative to DirectX and XNA?

Started by
10 comments, last by Brain 7 years, 6 months ago

Hey guys,

Hopefully a quick topic, but we'll see.....!!

Been programming for years and played with multiple languages, engines and SDKs over the years.

It's been awhile but I wanted to get back into it [game dev] again, and I'm trying to find out what I should use if I plan on coding in C++ (windows)

From what I understand DirectX and XNA etc etc are dead (or dying), so now what?

I'm working on a RPG game (currently console text based), but I'd like to take it to a 2D pixel style game.

Just pixel based background art with popup speech bubbles maybe and a hud for inventory etc etc

May move to animated pixel sprite/art later but right now just some basics.

Ideally something that can fullscreen and utilize the graphics card and not rely on crappy windows forms or GDI..

What are my options?

Thanks

There's no place like 127.0.0.1
Advertisement

XNA isn't being developed any longer. It still works fine, though if you were starting with some new project you may be better served using MonoGame.

Direct3D isn't dead or dying at all.

You could also try FNA if you only want to target windows/linux/macOS

EDIT:

Though if you are going for a RPG, particularly a JRPG, you may want to look at RPGMaker .

Any thoughts on SFML?

There's no place like 127.0.0.1

XNA was a really unfortunate and premature casualty. Killing it counts among Microsoft's significant blunders, IMO. Thankfully Monogame has picked up that torch, and is well-supported on all platforms -- the Xbox One is getting its first Monogame title, Axiom Verge, very soon.

DirectX isn't going anywhere. You no doubt have heard of Direct3D12 and Vulkan, which are great and are the way forward long-term, but Direct3D11 and classic OpenGL aren't going anywhere. They're not dead, they're not dying. We're just getting more options.

Then you have other frameworks like Cocos2D, SFML, SDL 2, and more, as well as cheap and readily available commercial game engines like Unity, Unreal Engine 4, Lumberyard, Gamemaker, and even specialized ones like RPG Maker. All of which can be and have been used commercially.

For C++ I'd probably recommend you look into SFML, SDL 2, and Cocos2D, go through some tutorials and then choose the one you like best. For C#, Monogame is pretty great, and put aside any silly notion that "real game programmers" only use C++; unless learning C++ is an explicit goal or you already have *serious* C++ skills, there's little reason to choose it over C#, and you're giving up a great many productivity advantages of C# in doing so.

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

Thanks for the info Ravyne..

I'm primarily a C# guy anyway so that would be my first choice, but I think it's probably fair to say the game industry is still C++

I live around 60 seconds away from Epic and they're still using C++. I'm not going to walk in there and get a C# job anytime soon LOL

My main focus is the game architecture and game logic and just refreshing my C++ skill.

So I don't want to invest too much time in the front end graphics at this point, just enough to get something functional.

And something I can port to something else [DX, Cocos2D etc etc] as needed.

There's no place like 127.0.0.1

I'm primarily a C# guy anyway so that would be my first choice, but I think it's probably fair to say the game industry is still C++

I live around 60 seconds away from Epic and they're still using C++. I'm not going to walk in there and get a C# job anytime soon LOL

You might be surprised. Yes, C++ is for now and in the future the go-to language for developing the guts of the game, but at the same time its becoming less and less the go-to language for writing gameplay code, tools, network services, and other things. You can be certain that Epic has members of its staff writing code in C# right now -- not the guys responsible for the guts of their engine, no, but others for sure. Probably a significant number of them. IIRC, Unreal 4 is not C# scripting like Unity is, but C# is not an uncommon choice for scripting languages in other engines (probably being second to Lua).

It really depends on what you want to do. If your interest is tools, online services, or gameplay then C# skills can absolutely land you a job. If your interest is rendering or other core engine systems then C++ is probably the right bet, especially if you want to do bleeding-edge technology. If you're content making games that aren't bleeding edge, a good number of people and studios are making those in C# now, and have been for years -- and I'm not talking ultra-casual, simple games. You can quite handily create a game in C# today that's to the standard of contemporary AAA titles.

If advancing your C++ skills aligns to your goals, then by all means use it. If its your preference, use it. If you're choosing it for whatever your own reasons are, use it. But don't use it just because you think its a hard requirement now or in the future, because that's becoming less and less true except for the niche of developing the game engine systems themselves. I love C++, and I'm a low-level kind of guy myself, but its really not the only gig in town anymore.

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

Any thoughts on SFML?


It's a very fine way to get things running in a timely and short manner but without the disadvantages of engines for those progrsmmers who want to keep control while learning to code

XNA was a really unfortunate and premature casualty. Killing it counts among Microsoft's significant blunders, IMO. Thankfully Monogame has picked up that torch, and is well-supported on all platforms -- the Xbox One is getting its first Monogame title, Axiom Verge, very soon.

DirectX isn't going anywhere. You no doubt have heard of Direct3D12 and Vulkan, which are great and are the way forward long-term, but Direct3D11 and classic OpenGL aren't going anywhere. They're not dead, they're not dying. We're just getting more options.

Then you have other frameworks like Cocos2D, SFML, SDL 2, and more, as well as cheap and readily available commercial game engines like Unity, Unreal Engine 4, Lumberyard, Gamemaker, and even specialized ones like RPG Maker. All of which can be and have been used commercially.

For C++ I'd probably recommend you look into SFML, SDL 2, and Cocos2D, go through some tutorials and then choose the one you like best. For C#, Monogame is pretty great, and put aside any silly notion that "real game programmers" only use C++; unless learning C++ is an explicit goal or you already have *serious* C++ skills, there's little reason to choose it over C#, and you're giving up a great many productivity advantages of C# in doing so.

I recall hearing that the folks at Unity where initially really worried when they heard about Microsoft and XNA. But of course MS managed to drop the ball, and Unity is now quite the powerhouse.

Unity and XNA were always meant to be quite different -- Unity meant to be cross-platform, higher-level, and GUI-driven pretty much from the start, it de-emphasizes coding to a great degree. XNA is a framework and content pipeline, its not really even an engine, it was meant to be cross-platform among a subset of Windows devices, but didn't itself ever have any grander ambitions, its lower-level and code-focused, rather than GUI focused. Monogame still follows that basic approach, but they've expanded the platform support and have moved to extend and go beyond XNA 4.0 (on which it was originally based) because they have to keep pace with new platforms and hardware.

Microsoft certainly dropped the ball with XNA, but it never was a threat to Unity (contemporary to XNA, Unity's stronghold was iOS, moving to android -- neither of which XNA could touch) and Unity was never a threat to XNA. What killed XNA was that Microsoft didn't have a clear image of what they wanted out of it. Had they gone all-in on XNA, it could have morphed into something that usurped the stake Unity holds in Windows today, or further afield if they had been even more ambitious, but the former never happened, much less the latter.

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

This topic is closed to new replies.

Advertisement