I am trying to get an overview of the different technologies, to use when building GUI's in the Windows World.
For context, I am building a little 2d platform multiplayer game. (Just for learning purpose..)
My teacher says that he think that WPF is the right way to go, but it seems that he only compare it to Windows Forms.
My understading is, that here in 2015, Windows Forms is totally dead?
In this other stackover questions, they say WinRT+XAML is for Metro GUI building(Window 8 tiles thing!), and it seems that WPF is something used only for desktop in Window 7/8 and are close related to Silverlight..
- The desktop is where the old apps live (red. WFP).
- The new class of applications, Metro applications, can be built in a number of ways, including by VB.NET, C# or C++. These three language options can use XAML for building the UI. The alternative is to use JavaScript/HTML5/CSS for the development of both the UI and application code.
My real question is: Isn't there ONE good way to build GUI's in the Window World?
And if not, which technologies should one use on Window 7, Window 8(Desktop and Metro), Window Phone, (And Windows 10!), and even x-box..
Is it to different technologies to be compared this way?
What do you think is the right thing to invest time in?
There's a lot here, but here goes:
As far as what to spend time on, that depends on what you are targeting :). Learning WPF/UWP + XAML will yield you a lot of benefits if you want to stay "current" in .NET GUI development, so thats what I would go for. WPF has the most features, so by starting there you just have to find workarounds for what is missing in UWP (or any other XAML based tech).
If you do that, make sure to learn the MVVM (Model-View-View Model) pattern. It works really well with the XAML based technologies, and allows you to share a lot of logic between your WPF and UWP applications. The same logic can also be used if you eventually develop Xamarin applications for iOS/Android, etc.
Note that for true game development, you'll want an actual game framework (like Unity3D or even XNA). You can do it in WPF, and that's a better choice than Winforms, but neither are really meant for games.